HTTPHooks используются для формирования произвольного HTTP API. В hooks нет встроенной авторизации, они доступны публично. Если требуется настроить HTTP API с авторизацией, можно реализовать её самостоятельно или использовать Actions с типом http.
Базовое REST HTTP API для CRUD генерируется автоматически и включается другим параметром: httpApi
Структура
httpHooks: HTTPHook[]
HTTPHook {
"uri": "string"
"method": "GET" | "PUT" | "POST" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS",
"script": function ($request):Response
}
Response {
"type": "JSON" | "HTML" | "XML" | "file" | "redirect",
"data": "string", // Строка, которая будет передана в Body ответа, либо адрес для редиректа для type:redirect
"rawData": any,
"code": int, // HTTP status code. По-умолчанию, 200
"header": {},
"fileName": "string", // Только для type:file
}
Свойства
method
HTTP методу, с которым будет доступен hook (строка). Допустимые варианты:
GET
;PUT
;POST
;PATCH
;DELETE
;HEAD
;OPTIONS
.
script
Непосредственно JavaScript код. На вход получает переменную $request. Должен вернуть объект типа Response.
uri
Полный путь будет сформирован таким образом:
http[s]://server-address/hooks/storeName/uri
В uri
можно использовать параметры, они начинаются с символа :
, например:
"uri": "/like/:photoId"
Значения параметров будут доступны через свойство params
объекта $request
, переданного аргументом
в скрипт hook-а.
Подробнее об объекте $request
читайте в разделе Serverside JS API: $request.
Response
Объект описывающий формат возврата данных из хука.
Свойства
code
HTTP status code (int). По-умолчанию, 200.
data
Тело ответа (строка). Будет передана в Body HTTP ответа сервера. В случае необходимости произвести перенаправление к другому ресурсу,
в data
следует положить URL ресурса.
fileName
Имя возвращаемого файла (строка). Указывается при type:file
.
header
HTTP заголовки ответа (JavaScript object).
_id
Идентификатор файла (строка). Используется при type:file.
rawData
«Сырые» (не сериализованные данные) виде (например, объект или массив).
store
Хранилище файла (строка). Используется при type:file.
type
Тип HTTP ответа (строка). Допустимые варианты:
-
JSON
— возврат данных в виде JSON. Устанавливается соответствующий HTTP заголовокContent-Type: application/json
. Данные следует передавать либо в сериализованном виде в свойстве data (рекомендованный способ), либо в «сыром» виде (например, объект или массив) в свойстве rawData. В последнем случае, данные будут сериализованы автоматически. -
HTML
— возврат данных в виде HTML. Устанавливается соответствующий HTTP заголовокContent-Type: text/html
. Данные следует передавать в свойстве data. -
XML
— возврат данных в виде HTML. Устанавливается соответствующий HTTP заголовокContent-Type: text/xml
. Данные следует передавать в сериализованном виде в свойстве data. -
file
— возврат файлов. HTTP заголовокContent-Type
устанавливается автоматически в зависимости от типа файла, определяемого по имени. Данные следует передавать закодированным в base64 буфером (Node Buffer) в свойстве data. При необходимости возврата файла из файлового хранилища, следует передать название Store в свойстве store и идентификатор файла в свойстве _id. -
redirect
— перенаправление на другой ресурс. URL ресурса следует передавать в свойстве data.