当acceptJson
是管道的一部分时,F#Saturn Web框架无法检索GET方法的值。
下面是我用来重现此问题的示例代码:
let api = pipeline {
plug acceptJson
set_header "x-pipeline-type" "Api"
}
let apiRouter = router {
not_found_handler (setStatusCode 404 >=> text "Api 404")
pipe_through api
get "/test" (text "Hello world")
}
let appRouter = router {
forward "/api" apiRouter
}
然后,将
appRouter
添加到use_router
代码的application
部分中。当我发送带有标题
Content-Type:application/json
的请求时,响应为“找不到404”。但是,如果我从plug acceptJson
管道定义中删除api
,则会得到正确的响应。如何使土星与
plug acceptJson
一起使用? 最佳答案
我怀疑3615是对的-这似乎与我昨天在墙上撞了一个星期后刚刚解决的问题相似。我的浏览器对我的应用程序(“ dotnew new Saturn”的直接应用程序)的请求已被接受。但是,从测试方法对相同URL的请求返回了404。它归结为测试请求缺少“ Accept”标头的事实。当我添加“接受文本/ html”时,它起作用了。我从中得出的结论是,如果应用程序找不到根据请求接受的内容类型,则它将报告404。您的情况相同-您正尝试返回Json,但是该请求未包含“接受应用程序/ json”,因此它找不到该请求将接受的任何页面。
当然,我可能是错的。
关于f# - 使用acceptJson时Saturn API无法响应GET,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60059026/