gpt4 book ai didi

haskell - 从 Yesod 中的 URL 查询中查找参数数组

转载 作者:行者123 更新时间:2023-12-04 15:25:08 24 4
gpt4 key购买 nike

我对 Haskell 和 Yesod 还是很陌生,所以我一直在浏览许多教程和文档。我发现了另一个关于解析 url 查询的 StackOverflow:Lookup query parameters in Yesod
也就是说,那里的解决方案不适用于这些 url 查询中的参数数组。

例如:http://localhost:3000/models/product?field[]=test1&field[]=test2&field[]=test3&domain[]=["id","name",True]&limit=25
据我所知,/models/product可以通过定义路由来处理,我什至可以得到domain[]范围。但是,如果我在 field[] 上查找我只能得到第一个值 test1而我没有办法得到其余的。另外,假设我不知道这个数组的大小,我将如何完成这个?

谢谢!

最佳答案

我通过一些 hack 代码解决了这个问题,但我相信那里可能有更好的解决方案。只是张贴这个供其他人引用:

getProductR :: Handler Value
getProductR = do
getParameters <- reqGetParams <$> getRequest
let fields = [ b | (a,b) <- getParameters , a == "field[]"]
let domains = cleanseInput getParameters "domain[]"
let limit = Import.lookup (Import.pack "limit") getParameters

return $ object [
(Import.pack "fields") .= fields,
(Import.pack "domains") .= domains,
(Import.pack "limit") .= limit
]

cleanseInput params key = [ Data.List.filter (/= "") [Data.Text.filter (/= ',' ) x | x<-(Data.Text.splitOn "\"" (Data.Text.tail (Data.Text.init b)))] | (a,b) <- params , a == key]

关于haskell - 从 Yesod 中的 URL 查询中查找参数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62441129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com