J'utilise les gestionnaires de requêtes trouvés dans ejabberd pour créer un service REST.Service REST à Ejabberd; DELETE et PUT, méthode
Est-il possible d'appeler les handles de requêtes ejabberd avec une méthode HTTP PUT et DELETE? Si c'est le cas, comment?
J'ai été en mesure d'invoquer request_handlers avec les méthodes HTTP POST et GET avec succès, mais ne semble pas pouvoir faire la même chose avec PUT ou DELETE.
Chaque fois que j'essaie de faire un PUT ou supprimer des que je reçois en retour un "400 Bad Request"
J'utilise une boucle pour faire le test
curl -i -X <METHOD> <URL>
pour GET, PUT et DELETE, et
curl -i -X <METHOD> <URL> -d <POSTBody>
POST (également essayé pour PUT et DELETE)
J'ai configuré la re les gestionnaires de quête ejabberd.cfg avec les éléments suivants
{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}
]}
]}
et 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.