开启cowboy的第一个程序
博客专区 > nao 的博客 > 博客详情
开启cowboy的第一个程序
nao 发表于3年前
开启cowboy的第一个程序
  • 发表于 3年前
  • 阅读 1091
  • 收藏 2
  • 点赞 0
  • 评论 0
摘要: 对http://ninenines.eu/docs/en/cowboy/HEAD/guide/getting_started/中介绍的有关如何编写cowboy的第一个程序的翻译。

 开始:

         Erlang不仅是一门语言,而且是一个操作系统对于你的应用程序。Erlang developers 很少写standalone modules, 它写库或应用,然后把这些组织在一起叫做一个release。一个release包含Erlang VM plus 的所有应用程序需要运行的节点,因此他可以直接的推到生产。(也就是通常使用erlang写一些库和应用,然后把这些库和应用打包在一起发布,这个release中包含了所有需要的东西)

         本章引导你完成所有关于Cowboy 设置的步骤, 写你的第一个应用程序和产生你的第一个release. 本章的结束你应该知道所有:你需要推动你的第一个Cowboy应用程序产生。


引导程序:

我们准备使用erlang.mk 创建系统,它还提供了引导功能允许我们快速开始,而不必处理微小细节。

首先,为我们的引用创建一个路径。

然后我们需要下载erlang.mk, 使用如下命令或者手动下载它。

 wget https://raw.githubusercontent.com/ninenines/erlang.mk/master/erlang.mk

如果遇到无法建立SSL连接的问题可以使用下面的命令:

wget --no-check-certificate  https://raw.githubusercontent.com/ninenines/erlang.mk/master/erlang.mk

我们现在可以引导我们的应用程序。因为我们准备产生一个release, 同时我们可以引导它。

 make -f erlang.mk bootstrap bootstrap-rel

这个命令产生一个Makefile, 一个基本的应用程序,和 创建所需的发布文件版本。我们已经可以创建和启动这个release.如下所示:

$ make
...
$ ./_rel/hello_erlang_release/bin/hello_erlang_release console
...
(hello_erlang@127.0.0.1)1>

输入命令i(),查看运行的进程,包含一个叫做hello_erlang_sup的进程。这个supervisor就是我们的应用。

这个release 目前什么都没做,这一章的剩下部分我们将添加Cowboy作为一个依赖和写一个简单的”Hello world”处理。


Cowboy 设置:

添加cowboy作为依赖到你的应用程序,你需要修改两个文件:MakeFile和应用资源文件。

修改Makefile允许创建系统知道它需要fetch和编译Cowboy, 做这些,我们需要简单的添加一行到Makefile文件,如下所示:

修改应用资源文件,src/hello_erlang.app.src, 允许创建系统去知道他需要包含Cowboy在release中和自动启动它。这是一个不同的步骤,因为在开发环境中的需要一些依赖项。

我们简单的添加cowboyapplications列表,在stdlib的右边,不要忘记逗号分隔符。

你可能想要一个对应用程序的描述当你编写文件时。在description后面添加描述信息。

如果你现在运行make和开启releaseCowboy将被包含和自动开启。然而这些还不够,因为Cowboy默认什么都不做,我们仍然需要告诉Cowboy去监听连接。


监听连接:

我们将会做这些当我们的应用程序开启时。有两个步骤,第一,我们需要定义和编译dispatch列表,一个routes列表,Cowboy将会使用它映射请求去处理程序模块。然后我们告诉Cowboy去监听连接。

打开src/hello_erlang_app.erl文件,添加需要的代码到start/2函数,如下所示:

start(_Type, _Args) ->
    Dispatch = cowboy_router:compile([
        {'_', [{"/", hello_handler, []}]}
    ]),
    cowboy:start_http(my_http_listener, 100, [{port, 8080}],
        [{env, [{dispatch, Dispatch}]}]
    ),
    hello_erlang_sup:start_link().

Dispatch list routes一章详细说明。对于本教程,我们映射到路径/到处理模块hello_handler.

这个模块还没存在,我们仍然需要编写它。

如果你现在编译release 启动它和打开一个  http://localhost:8080 ,你将会得到一个错误,因为这个模块还不存在,任何其他的URL, http://localhost:8080/test, 将会是404错误。

如下所示:


处理请求:

Cowboy有不同特性的处理程序,包括 REST Websocket处理程序,对于本教程中我们将使用一个普通的HTTP处理程序。

首先,让我们从一个模板生成一个处理程序。

make new t=cowboy_http n=hello_handler

然后,你可以打开src/hello_handler.erl 文件和修改handle/2 函数,如下所示发送一回复。

handle(Req, State=#state{}) ->
        {ok, Req2} = cowboy_req:reply(200,[
                {<<"content-type">>, <<"text/plain">>}
                ],<<"hello world!">>, Req),
        {ok, Req2, State}.

上述代码内容是发送一个200 ok 回复,content-type 处理设置成text/plain 发送主体设置成 hello world!

如果你创建release, 启动它,打开 http://localhost8080 在你的浏览器中, 你将会得到一个 漂亮的 hello world! 显示!

如下:

标签: erlang cowboy
共有 人打赏支持
粉丝 28
博文 143
码字总数 105505
×
nao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: