Saturn API не отвечает на GET при использовании acceptJson
Веб-фреймворк F# Saturn не может получить значение для метода GET, когда acceptJson
является частью трубопровода.
Ниже приведен пример кода, который я запускаю для воспроизведения проблемы:
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
?
1 ответ
Я подозреваю, что 3615 прав - это похоже на проблему, которую я только что решил вчера после того, как в течение недели бился головой о стену. Запрос на мое приложение (просто прямое приложение от dotnew new Saturn) из моего браузера был принят. Но запрос на тот же URL от тестового метода вернул 404. Все сводилось к тому, что в тестовом запросе отсутствовал заголовок "Принять". Когда я добавил "Принять текст /html", это сработало. Из этого я сделал вывод, что если приложение не может найти тип контента, который будет принят в соответствии с запросом, оно выдаст ошибку 404. У вас такая же ситуация - вы пытаетесь вернуть Json, но В запросе не было "Принять приложение /json", поэтому он не может найти ни одной страницы, которую бы принял запрос.
Конечно, я мог ошибаться.