我正在使用在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.