安装 phoenix framework

安装 phoenix 很简单:

mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez

安装之后,mix 的子命令中就多了 phoenix 相关的内容了。

$ mix help | grep phoenix
$ mix local.phoenix # Updates Phoenix locally
$ mix phoenix.new # Creates a new Phoenix v1.2.1 application

phoenix 工程介绍

接下来,我们创建一个 phoenix 的工程。

$ mix phoenix.new phoenix_api --no-ecto     # 本示例中不带数据库的操作,所以加上 --no-ecto 参数

$ cd phoenix_api       # 创建完之后进入工程目录
$ tree -L 1 . # 查看目录结构
.
├── README.md
├── _build
├── brunch-config.js
├── config
├── deps
├── lib
├── mix.exs
├── mix.lock
├── node_modules
├── package.json
├── priv
├── test
└── web # 主要的代码都要这里

phoenix 是个完整的 web 框架,包括 controller,view以及model,template等等,但是我们这里只用 phoenix 作为 api 的后端,所以前端相关的内容就不介绍了。 用 phoenix 作为 api 的后端,主要关注 web/router.ex 文件和 web/controllers 文件夹,其他的件暂时不用理会。

创建 http api

接下来,使用 phoenix 实际创建一个简单的 api 来感受一下。 首先,增加一个 controller,其中是api的具体实现代码

defmodule PhoenixApi.HelloController do
use PhoenixApi.Web, :controller def hello(conn, _params) do
json conn, %{"hello": "world"}
end
end

新增的 controller 路径: web/controllers/hello_controller.ex

controller 增加了之后,再在 web/router.ex 中增加一个指向 controller 中 hello 方法的路由, web/router.ex 已经有了针对 api 的 pipeline, 只要增加如下代码即可。

scope "/api", PhoenixApi do
pipe_through :api get "/hello", HelloController, :hello
end

然后启动 phoenix server, 在工程根目录下执行:

$ mix phoenix.server
Compiling 7 files (.ex)
[info] Running PhoenixApi.Endpoint with Cowboy using http://localhost:4000
26 Aug 16:43:04 - info: compiled 6 files into 2 files, copied 3 in 1.2 sec

最后在浏览器中访问 http://localhost:4000/api/hello 可以看到返回的JSON结果

{
"hello": "world"
}

总结

Web app的前后端分离是趋势,phoenix framework 虽然是类似 RoR 的全栈 web framework, 只用它来开发api也是不错的选择。 用它来开发 api,我们可以暂时不关心 view 和 template 部分,将重点放在 controller 和 router 上。

来源:http://blog.iotalabs.io/

phoenix 开发API系列(一)创建简单的http api的更多相关文章

  1. WEB API系列(一):WEB API的适用场景、第一个实例

    在我前一篇博客中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下,今天,我们一起来讨论一下WEB API的适用场景,然后写我们第一个W ...

  2. Web API 2 入门——创建ASP.NET Web API的帮助页面(谷歌翻译)

    在这篇文章中 创建API帮助页面 将帮助页面添加到现有项目 添加API文档 在敞篷下 下一步 作者:Mike Wasson 创建Web API时,创建帮助页面通常很有用,以便其他开发人员知道如何调用A ...

  3. Knockout开发中文API系列2–创建数据模型和监控属性

    Observables,这个词的翻译来自汤姆大叔,对于部分翻译不是很准确的,欢迎大家留言,以得到更好的翻译. Knockout是建立在以下3个核心功能之上的: 1.    属性监控与依赖跟踪 2.   ...

  4. ArcGIS Server开发教程系列(7)使用ArcGIS API for Javascript-Hello World

    ArcGIS API for Javascript  API下载地址:http://support.esrichina-bj.cn/2011/0223/960.html 选择最新的下载就好了,目前是3 ...

  5. 【Web API系列教程】1.2 — Web API 2中的Action Results

    前言 本节的主题是ASP.NET Web API怎样将控制器动作的返回值转换成HTTP的响应消息. Web API控制器动作能够返回下列的不论什么值: 1. void 2. HttpResponseM ...

  6. phoenix 开发API系列 目录

    phoenix 开发API系列(一)创建简单的http api phoenix 开发API系列(二)phoenix 各类 api 实现方式 phoenix 开发API系列(三)phoenix api ...

  7. phoenix 开发API系列(三)phoenix api 结合数据库

    概述 介绍了 api 的各种写法之后,下面介绍构建 api 时与数据库连接的方式. 注 下面使用的工程的完整代码已经公开在: http://git.oschina.net/wangyubin/phoe ...

  8. phoenix 开发API系列(二)phoenix 各类 api 实现方式

    概述 上一篇已经提到如何安装以及利用 phoenix framework 来开发一个简单的 api. 接着上次的工程,下面演示如何通过 phoenix framework 来构建各种类型的 api 来 ...

  9. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

随机推荐

  1. go的mgo,连接未释放问题,连接泄露。

    api启动几天后,卡住(连接失败,超时) 异常原因 mongo连接被占满,无法建立mgo连接,返回信息 查询点用端口可知,97%的连接被api项目占用. api项目的mongodb连接“泄露”,某处的 ...

  2. android 使用LinearGradient进行字体渐变的效果

    有这么一种效果,一串字符有一束白光从字体上面闪光的效果.如下图显示: 就像上面的显示效果一样一束白光闪过,这种效果主要还是使用了LinearGradient类来进行的 LinearGradient也称 ...

  3. win10 virtualbox5, ubuntu16.04 xshell5配合使用

    这个搭配很好用,各软件的安装很容易,ubuntu安装进virtualbox后安装增强功能,然后将网络连接方式改为桥接,直接改为桥接就可以了,其他的不用变,这个比以前的版本好用多了.这个桥接解决了宿主机 ...

  4. arch linux 安装 之 ---GPT--引导篇

    新入一二手X240 ,直接格式化,装archLinux. 一.引导程序安装--------------- 1.首先搞清楚什么是UEFI Under UEFI下的引导顺序 System switched ...

  5. window常用命令

    netstat -ano|findstr "端口号"     :查看指定端口信息[netstat -ano|findstr "端口号" ] ,然后看下PID号 ...

  6. android命令抓LOG

    手机和电脑,在电脑上开3个命令窗口,分别输入如下3个命令分别抓取mainLog.radioLog和kernalLog adb logcat -v time >main.txt adb logca ...

  7. rsync排除文件同步

    排除扩展名为log的文件 rsync -ave ssh --exclude '*.log' root@192.168.168.188:/website/abc.com/* /website/abc.c ...

  8. ZooKeeper事务日志记录器SyncRequestProcessor

    SyncRequestProcessor作为一个ZooKeeper中的一个关键线程(ZooKeeperCriticalThread),是ZooKeeper请求处理链中的事务日志记录处理器,其主要用来将 ...

  9. 由React学习到Yeoman安装以及遇到的问题

    离职闲下来之后想着学一些新知识,本来是想从react入手,结果延伸出去的内容就像一棵树的树枝,不断增加. 学习计划是从这里开始的(6周学习计划,攻克javascript难关 https://zhuan ...

  10. virtual 修饰符 C# .NET

    virtual 关键字用于修饰方法.属性.索引器或事件声明,并且允许在派生类中重写这些对象. 例如,此方法可被任何继承它的类重写. (C#参考) public virtual double Area( ...