Я обслуживаю API с использованием Servant, все управляется Snap.В Servant легко включить произвольный тип данных как часть запроса POST, предполагая, что у него есть экземпляр FromJSON
.Например, у меня может быть следующая конечная точка:
ReqBody '[JSON] RequestData :> Post '[JSON] [ResponseData]
Как мне сделать то же самое для запросов GET?Из того, что я понимаю, мне нужно было бы использовать параметры запроса, но мои данные запроса состоят из сложных типов данных (списков, вложенных словарей), которые не кажутся легко читаемыми, например, QueryParam "vals" [Int] :> Post '[JSON] [Int]
приводит к ошибке No instance for (FromHttpApiData [Int])
В качестве обходного пути можно использовать запросы POST, которые имеют легко читаемые тела запросов.Однако это противоречило бы моей схеме кэширования в Nginx, поскольку ответы на запросы POST не так легко кэшируются.Даже если я могу их кешировать, я не хочу кешировать все почтовые запросы, так что это будет грязный подход.
Спасибо за любую помощь!