【erlang】rebar3简易的cowboy服务器

获取rebar3

在 https://github.com/erlang/rebar3 下载 rebar3 , 下载整个项目解压后,运行 bootstrap.bat 即可获得 rebar3 文件,这个文件是可以复用的。

下载git

在 https://git-scm.com/downloads/ 下载 git ,默认安装,安装完成后,在空白地方右键会有 git bash here 选项,打开的界面实际上就是一个 linux 命令执行的界面,可以简单测试下( pwd 可以显示当前目录等)

rebar3初始化项目

将rebar3复制到要创建项目的目录下,空白处右键 git bash here ,键入命令 ./rebar3 new release bridge(在这里, ./rebar3 表示使用当前目录下的名为 rebar3 的脚本文件,release 是创建的项目类型, bridge  是项目的名字)。 会产生一个 bridge 文件夹,包含有 apps 文件夹(apps\bridge\src 目录下有bridge.app.src 文件, bridge_app.erl 文件,bridge_sup.erl 文件)config 文件夹,rebar.config 文件和其他。

1)打开 rebar.config 文件,在第二行 { deps,[]} 的列表内部加入下面一行代码 :

{cowboy, "*.*", {git, "https://github.com/ninenines/cowboy", {tag, "2.2.2"}}

这代表本项目需要用到 cowboy,并标注了项目的git地址和版本,目前最新版本是2.4.0

2)打开 apps/bridge/src 文件夹,打开bridge.app.src 文件,能看得到一个 application 参数,值是一个列表,内部已经有 kernel和stdlib (这两个是erlang的基础库),在后面加一个 cowboy

3)在 2)的同级目录下的 bridge_app.erl 文件,这是程序的入口文件, 默认在 start 函数内部会有一条监察者的 start_link ,将其修改如下:

【erlang】rebar3简易的cowboy服务器_第1张图片

在这里, 第四行的 "/echo" 是访问地址的后缀,第八行的port后的 8080 是访问的端口, 第八行的 start_clear 代表 http,部署的地方默认是本机,也就说我们的访问地址是 http://localhost:8080/echo,第四行第二个echo代表我们访问之后处理的函数的名字, 也就是说我们需要在当前目录新建一个 echo.erl 文件来处理请求。

4) 在2)的同级目录下新建 echo.erl 文件,定义两个方法 init/2 和 terminate/2如下 :

【erlang】rebar3简易的cowboy服务器_第2张图片
处理函数

init 函数是请求进入的地方,Req 就是当前的请求,这里的逻辑是取出 Req 的请求方法, 如果为 POST 请求,则取出报文的请求体返回给客户端,如果是其他方法,则打印出方法名,并返回一句 not post

rebar3运行项目

将 rebar3 复制到 rebar.config 的同级目录下, 执行 ./rebar3 shell,shell命令会启动所有需要的依赖并开启服务器,这时候就可以进行请求了, 在浏览器中直接访问  http://localhost:8080/echo 看看效果吧~

如果要模拟post请求,可以使用 Fiddler,PostMan等工具,输入的 Body 内容将会同样的返回给你,这个我本机已经测试成功了,就留待各位看官自己也测试下了


后记

实际生产中,我们不可能一直开着这样的一个窗口,所以我们创建的时候用的是 new release 而不是 new app,我学习上述内容的地址是以下两个英文内容的地址,如果你有余力,可以自行阅读,本文的篇幅也比较长了,在生产上release的方法就放到下一篇文章,谢谢阅读,希望有所帮助

http://www.rebar3.org/

https://ninenines.eu/

你可能感兴趣的:(【erlang】rebar3简易的cowboy服务器)