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/

10-10 13:16