Как включить сжатие для вызова JSON REST в Suave?
Я хочу знать, как вернуть JSON для моих сжатых вызовов REST:
GET /orders HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Но документы говорят только о возврате файлов
let setJson it =
it
|>JsonUtils.toJson
|> OK
>=> setMimeType "application/json; charset=utf-8"
let doReq route request action =
path route >=> setCORSHeaders >=> request (fun r -> action(r) |> setJson)
doReq "/orders" request (fun r -> queryOrders(r |> getTerm, Products.Name))
1 ответ
Решение
Я считаю, что это настраивается в картах типов MIME путем добавления нового типа MIME и передачи true
для второго параметра, вот так:
let mimeTypes =
defaultMimeTypesMap
@@ (function | ".json" -> createMimeType "application/json" true | _ -> None)
let webConfig = { defaultConfig with mimeTypesMap = mimeTypes }
Конфигурация для типов MIME и сжатия документирована на этой странице.