Я использую обработчики запросов, найденные в ejabberd, для создания службы REST.
Можно ли вызывать обработчики запросов ejabberd с помощью метода PUT и DELETE HTTP?Если да, то как?
Я смог успешно вызвать request_handlers с методами HTTP POST и GET, но не могу сделать то же самое с PUT или DELETE.
Каждый раз, когда япопробуйте сделать PUT или DELETE. Я получу взамен «400 Bad Request»
Я использую curl, чтобы выполнить тестирование
curl -i -X <METHOD> <URL>
для GET, PUT и DELETE, и
curl -i -X <METHOD> <URL> -d <POSTBody>
для POST (также пробовал для PUT и DELETE)
Я настроил обработчики запросов в ejabberd.cfg со следующими
{listen,
[
(...)
{5280, ejabberd_http, [
http_bind,
http_poll,
web_admin,
{request_handlers, [
{["hello_world"], mod_http_hello_world},
{["users"], mod_http_registered_users},
{["api"],mod_http_rest_api}
]}
]}
и mod_http_rest_api
-module(mod_http_rest_api).
-define(EJABBERD_DEBUG, true).
-behavior(gen_mod).
-export([start/2,stop/1,process/2]).
-include("ejabberd.hrl").
-include("jlib.hrl").
-include("ejabberd_http.hrl").
start(_Host, _Opts) ->
?INFO_MSG("mod_http_rest_api: Starting",[]),
ok.
stop(_Host) ->
?INFO_MSG("mod_http_rest_api: Stoping",[]),
ok.
process(List,#request{method = Method}) ->
StrMethod = atom_to_list(Method),
List ++ " was invoked with method " ++ StrMethod.