Как включить сжатие для вызова 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 и сжатия документирована на этой странице.

Другие вопросы по тегам