我正在使用在ejabberd中发现的请求处理程序来构建REST服务。Ejabberd的REST服务; DELETE和PUT方法
是否可以使用PUT和DELETE HTTP方法调用ejabberd request_handlers?如果是这样如何?
我已经能够使用POST和GET HTTP方法成功调用request_handlers,但似乎无法对PUT或DELETE执行相同的操作。
每次我尝试做一个PUT或DELETE我得到的回报是“400错误的请求”
我使用卷曲做的测试
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.