:body-params против :form-params в compojure-api

В чем разница между использованием :body-params и :form-params на практике при создании API с использованием compojure-api? Например:

(POST* "/register" []
    :body-params [username :- String,
                  password :- String]
    (ok)))

vs

(POST* "/register" []
    :form-params [username :- String,
                  password :- String]
    (ok)))

Какой из них следует использовать для API, который будет использоваться одностраничным приложением clojurescript и/или собственными мобильными приложениями?


person pupeno    schedule 01.08.2015    source источник


Ответы (1)


Это связано с поддерживаемым типом контента:

  • form-params предназначены для использования с типом контента "application/x-www-form-urlencoded" (форма)
  • body-params предназначены для использования для параметров, которые также будут расположены в теле с другими типами контента (edn, json, транзит и т. д.).

Вы захотите использовать :body-params, чтобы использовать его из своего clojurescript или мобильных приложений.

Использование form-params или body-params повлияет на то, как проверяются параметры, из какой части запроса они берутся и как будет создаваться файл swagger.json, если вы используете расширения swagger.

Многие вещи в compojure-api трудно понять, не сопоставляя их с концепциями в swagger. Просмотр кода мы находим чванливые термины, такие как "consumes" или "formData", которые можно найти в спецификации параметра swagger.

person nberger    schedule 01.08.2015