По умолчанию Servant возвращает запросы в виде простой строки, даже если запрошенная конечная точка возвращает JSON
$ http $S/signup email=mail@domain.com
HTTP/1.1 400 Bad Request
Connection: keep-alive
Date: Tue, 14 Apr 2020 15:59:32 GMT
Server: nginx/1.17.9 (Ubuntu)
Transfer-Encoding: chunked
Error in $: parsing Credentials.Credentials(Credentials) failed, key "password" not found
Я пытаюсь обернуть такие строки в простые JSON
словари:
$ http $S/signup email=mail@domain.com
HTTP/1.1 400 Bad Request
Connection: keep-alive
Date: Tue, 14 Apr 2020 15:59:32 GMT
Server: nginx/1.17.9 (Ubuntu)
Transfer-Encoding: chunked
{"error": "Error in $: parsing Credentials.Credentials(Credentials) failed, key \"password\" not found"}
Но, похоже, это не так просто.
В этом вопросе указаны возможные решения, но я не могу заставить их работать сегодня Пользовательские JSON Ошибки для Servant-сервера
В этой теме обсуждается другой подход https://github.com/haskell-servant/servant/issues/732, но он выглядит излишним для такой простой задачи.
Интересно, будет ли в 2020 году простое и надежное решение?