- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试通过 Cowboy 设置 restful API我需要为所有方法使用一个处理程序的主要事情
这里是路由器::
start(_Type, _Args) ->
Dispatch = cowboy_router:compile([
{'_', [
{"/api", handler, []},
{"/api/:id", handler, []}
]}
]),
{ok, _} = cowboy:start_clear(http, 100, [{port, 8080}], #{
env => #{dispatch => Dispatch}
}),
api_sup:start_link().
这是处理程序代码::
-module(handler).
-export([init/3, handle/2]).
init(_Transport, Req, []) ->
{ok, Req, undefined}.
handle(Req, Opts) ->
case cowboy_req:method(Req) of
<<"POST">> ->
Body = cowboy_req:has_body(Req),
Request = postMethod(<<"POST">>, Body, Req),
{ok, Request, Opts};
<<"GET">> ->
#{id := Id} = cowboy_req:match_qs([{id, [], undefined}], Req),
Request = getMethod(<<"GET">>, Id, Req),
{ok, Request, Opts};
<<"PUT">> ->
Body = cowboy_req:has_body(Req),
Request = putMethod(<<"PUT">>, Body, Req),
{ok, Request, Opts};
<<"DELETE">> ->
#{id := Id} = cowboy_req:match_qs([{id, [], undefined}], Req),
Request = deleteMethod(<<"DELETE">>, Id, Req),
{ok, Request, Opts}
end.
postMethod(<<"POST">>, _Body, Req) ->
cowboy_req:reply(200, #{<<"content-type">> => <<"application/json; charset=utf-8">>}, <<"{\"status\": \"POST\"}">>, Req).
getMethod(<<"GET">>, _Id, Req) ->
cowboy_req:reply(200, #{<<"content-type">> => <<"application/json; charset=utf-8">>}, <<"{\"status\": \"GET\"}">>, Req).
putMethod(<<"PUT">>, _Body, Req) ->
cowboy_req:reply(200, #{<<"content-type">> => <<"application/json; charset=utf-8">>}, <<"{\"status\": \"PUT\"}">>, Req).
deleteMethod(<<"DELETE">>, _Id, Req) ->
cowboy_req:reply(200, #{<<"content-type">> => <<"application/json; charset=utf-8">>}, <<"{\"status\": \"DELETE\"}">>, Req).
我收到错误:牛仔 500 错误
最佳答案
找到了答案。这是工作正常的代码(使用 Cowboy 的主版本)
-module(handler).
-export([init/2]).
-export([content_types_provided/2]).
-export([content_types_accepted/2]).
-export([allowed_methods/2]).
-export([router/2]).
init(Req, Opts) ->
{cowboy_rest, Req, Opts}.
allowed_methods(Req, State) ->
{[<<"GET">>, <<"POST">>, <<"PUT">>, <<"DELETE">>], Req, State}.
content_types_provided(Req, State) ->
{[{<<"application/json">>, router}], Req, State}.
content_types_accepted(Req, State) ->
{[{<<"application/json">>, router}], Req, State}.
router(Req, Opts) ->
case cowboy_req:method(Req) of
<<"POST">> ->
{<<"{\"status\": \"POST\"}">>, Req, State};
<<"GET">> ->
{<<"{\"status\": \"GET\"}">>, Req, State};
<<"PUT">> ->
{<<"{\"status\": \"PUT\"}">>, Req, State};
<<"DELETE">> ->
{<<"{\"status\": \"DELETE\"}">>, Req, State}
end.
关于rest - Cowboy 多方法处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050994/
尝试通过 Cowboy 设置 restful API我需要为所有方法使用一个处理程序的主要事情 这里是路由器:: start(_Type, _Args) -> Dispatch = cowb
有没有一种简单的方法可以在 Cowboy 中设置一个允许多个处理程序的调度路由,例如:/base/add_something/base/remove_something 并让每个操作都由可以区分它们的
我已经在 CentOS 7 linux 服务器上安装了 Erlang vesion 19.3。昨天,我下载了 Cowboy HTTP 服务器(最新版本)。在 examples/hello_world
我正在使用 Cowboy 和 erlang.mk 进行开发,目前我的流程是: 1.修改vi中的代码,保存,运行make 2. 关闭 Cowboy,再次启动 Cowboy(为了跟踪/调试目的,我在控制台
是否可以使用诸如 mix phoenix.server --port=4001 之类的命令从控制台在不同端口上本地启动一些 Phoenix 应用程序?当然,这个方法行不通,但是也许还有类似的方法。 最
我有一个路由器插头 defmodule Rest do use Plug.Router import Plug.Conn plug :match plug :dispatch ge
除了阅读关于语法和基本结构的奇书和网站之外,我对 Erlang 完全陌生。我决定投入其中并使用 cowboy 创建一个简单的 Web 服务器。每次我尝试运行我收到的应用程序时 {"init termi
我的 Phoenix 应用程序在 HTTP 端点后面具有复杂的业务逻辑。该逻辑包括与数据库和少量外部服务的交互,一旦请求处理开始,在所有操作完成之前不得中断。 但是,如果客户端突然关闭连接,则似乎 C
我开始学习Erlang。我想编写一个简单的基于牛仔的HTTP服务器,它可以接收通过HTTP POST发送的文件。所以我创建了简单的处理程序: -module(handler). -behaviour(
我想使用 otp 的 httpc:request/4; 从 cowboy 发送 http post application:start(inets) 返回一个错误: error,{"no such f
牛仔:https://github.com/extend/cowboy 在ssl例子中,ssl文件夹下需要三个文件,分别是cowboy-ca.crt、server.crt 和 server.key。
在从我在 Heroku 上托管并由 NodeJS/express 提供服务的站点返回的 Server 响应 header 中,我看到值 牛仔。 谁为 Server 输出那个值? 奖金,使用 Cowbo
我有一个 Cowboy websocket 服务器,我想注册一个 gen_event通过 websocket 发送内容的处理程序。我还需要能够使用 websocket_handle/3 回复常规同步请
我正在使用牛仔( https://github.com/extend/cowboy )作为一个安静的网络服务,我需要从“http://localhost:8080/?a=1&b=2&c=32”获取参数
当您使用 Mix 创建应用程序时,它始终会向项目添加一个根主管文件。请注意监督函数中的“子规范”数组是如何为空的。 应用程序: defmodule App.Supervisor do use
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 3年前关闭。 Improve t
我有一个基于 Cowboy 的 Erlang 应用程序,我想测试它。 之前我用的是wooga的库etest_http对于此类任务,但我想开始使用通用测试,因为我注意到这是 cowboy 中使用的方式。
我想在 Cowboy 中创建一个 websocket 应用程序,该应用程序从另一个 Cowboy 处理程序获取其数据。假设我想结合牛仔中的 Echo_get 示例:https://github.com
我有一个 elixir项目和下面是混合配置文件: defmodule MyFirstApp.Mixfile do use Mix.Project def project do [
如何为牛仔休息处理程序启用 CORS? 我尝试添加 options/2 方法,如下所示: options(Req, State) -> {[ {>, >}, {>,
我是一名优秀的程序员,十分优秀!