如何使用Elixir和Phoenix快速入门构建CRUD REST API

这篇文章将展示如何使用Elixir和Phoenix框架构建REST API。 重点将是为持久化到Postgres数据库后端的模型提供CRUD(创建,读取,更新,删除)端点。 我应该警告你; 这是一个简单的例子。 但是,希望它可以帮助您在Elixir和Phoenix的旅途中前进。

附带说明 :我来自使用Akka和Scala构建REST API。 与Akka相似,Elixir具有Erlang的基础。 我喜欢异步处理的Erlang模型。 一个人怎么可能不是? 好吧,分布式异步系统很难调试,但是我离题了。 就像我说的那样,我仍然喜欢这种模型,因为它可以扩展。 很高兴回到Elixir的松散类型语言。

一,安装要求

  1. 安装Elixir(详细信息:http://elixir-lang.org/install.html。请按照以下说明进行操作,因为其中包含Erlang。我使用自制软件进行安装)
  2. 通过在终端中运行来安装Hex:

    Elixir Hex安装
    mix local.hex
  3. 安装Phoenix:
    mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
  4. 也许安装Node.js作为资产管理的依赖项。 请参见http://www.phoenixframework.org/docs/installation上的“ node.js”部分
  5. 安装Postgres。 我在Mac上使用Postgres.app。 确保postgres用户的密码为postgres

其次,让我们建立

  1. 在终端窗口中,通过发出以下命令来创建基准应用程序:

    新的Phoenix Framework应用程序
    mix phoenix.new api_spike

    根据需要命名api_spike。 可能会要求您安装依赖项。 我说是! (参考:上面第一部分的步骤4)

  2. 进入新的api_spike目录:
    cd api_spike
  3. 创建用于该应用程序的Postgres数据库:
    mix ecto.create

    背景:如果这不起作用,请检查conf / dev.exs文件中的Postgres设置。 默认连接使用用户名postgres和密码postgres 。 请参阅上面的步骤5。

  4. 生成一个模型并免费获得大量其他东西:
    mix phoenix.gen.json User users fullname:string email:string age:integer

    注意: phoenix.gen任务正在指定json。 如果使用phoenix.gen.html,也可以构建HTML视图。 当我第一次尝试Phoenix时,这让我很困惑。

  5. 打开web / router.ex文件,取消对api作用域的注释,并为上一步中新生成的UserController添加新行。 它看起来应该像这样:

    凤凰REST API
    scope "/api", ApiSpike dopipe_through :apiresources "/users", UserController, except: [:new, :edit]end
  6. 通过发出以下命令更新数据库:

    mix ecto.migrate
  7. 做完了 启动凤凰!
    mix phoenix.server

第三,尝试一下

现在,我们可以进行一些调用以执行CRUD操作,例如create:

curl -H "Content-Type: application/json" -X POST -d '{"user": {"fullname": "Todd", "email": "phoenix@apiexample.com", "age": 19}}' http://localhost:4000/api/users

现在读取:

curl -H "Content-Type: application/json" http://localhost:4000/api/users
curl -H "Content-Type: application/json" http://localhost:4000/api/users/1

更新:

Phoenix框架更新REST调用

curl -H "Content-Type: application/json" -X PUT -d '{"user": {"fullname": "Not Todd", "email": "phoenix@apiexample.com", "age": 43}}' http://localhost:4000/api/users/1

最后,删除:

curl -H "Content-Type: application/json" -X DELETE http://localhost:4000/api/users/1

吃喝玩乐跳舞

我确实将此帖子称为“快速入门”。 旨在帮助您开始使用Phoenix构建REST API,并更轻松地使用Elixir。 如果您需要更多详细信息,请在Twitter上与我联系或在下面发表评论。

翻译自: https://www.javacodegeeks.com/2016/02/build-crud-rest-apis-elixir-phoenix-quick-start.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01背包(修订版)

由于时间比较充裕,重新修订一部分。 这次把一些补充的放进来,其他的基础说明见后半部分 这些一共说明:01背包、完全背包、多重背包 将会详细说明。 三种背包混合、二维背包、分组背包、依赖背包、泛化背包 将大致说明。 01背包 如上次说明一…

java 马踏棋盘优化_我所知道的十大常用算法之马踏棋盘算法(深度搜索、贪心思想优化 )...

前言需求今天我们学习的是马踏棋盘算法,我们还是从一个场景里引入看看马踏棋盘算法也被称为骑士周游问题将马随机放在国际象棋的66棋盘Board0~5的某个方格中提示:马按走棋规则(马走日字)进行移动要求:每个方格只进入一次&#xff…

app engine_App Engine中的Google Services身份验证,第2部分

app engine在本教程的第一部分中, 我介绍了如何使用OAuth进行Google API服务的访问/身份验证。 不幸的是,正如我稍后发现的那样,我使用的方法是OAuth 1.0,显然现在Google正式弃用了OAuth 1.0,改用OAuth 2.0版本。 显然…

Django知识总结(一)

壹 ● 有关http协议 一 ● 全称 超文本传输协议(HyperText Transfer Protocol) 二 ● 协议 双方遵循的规范 http协议是属于应用层的协议(还有ftp, smtp等), 即浏览器请求消息和服务器响应消息的一系列规则 三 ● http协议的特性 http是无状态、无连接的协议(stateless, connect…

java数组使用实验报告_JAVA数组与类的定义-java实验报告

JAVA数组与类的定义-java实验报告JAVA数组与类的定义-java实验报告、实验目的与要求1、 熟悉Java类、对象和方法的一般操作练习等。2、 熟悉数组等的定义和使用。二、实验内容及步骤(包括源程序和运行结果截图)1. 编写Java小应用程序,程序中自定义一个方法&#xff…

JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)

Java EE 7已经存在了几年,它提供了一些非常有用且期待已久的功能,例如实体图以及对存储过程和结果映射的更好支持。 有关概述,请参阅Thorben Janssen的博客文章 。 但是,我想添加有关JPA查询语言功能的更详细的摘要。 在JPQL和Cri…

mysql+if+x+mod+2_Windows 下 MantisBT 2.X + Apache 2.4 + PHP 7 + MySQL 5.7 的环境配置

Apache 2.4.25~ Visual C Redistributable for Visual Studio 2015PHP 7.1.3~ mod_fcgid-2.3.9Mantisbt-2.2.1MySQL Database 5.7.17~ NET Framework 3.5安装 Apache前期准备1.若计算机已安装了 Apache2.4 以前的版本,请自行卸载并删除安装目录。2.以管理员身份运行…

ASP.NET MVC ActionMethodSelectorAttribute 以及HttpGet等Action特性

一、ActionMethodSelectorAttribute 其是一个抽象类,继承自Attribute,子类有NonActionAttribute、HttpGetAttribute、HttpPostAttribute、HttpPutAttribute、HttpDeleteAttribute、HttpPatchAttribute、HttpHeadAttribute、HttpOptionsAttribute和Accept…

java 中map_Java中Map集合

1. Java中Map集合1. Map中value可以重复,key不能重复。对于重复的key值来说,后放置的值对覆盖前放置的值。import java.util.HashMap;public class MapTest1{public static void main(String[] args){HashMap map new HashMap();map.put("a",…

如何在Java中对文件进行模式匹配和显示相邻行

最近,我们在jOOλ0.9.9中发布了有关超棒的窗口函数支持的文章 ,我相信这是对我们所做的库的最佳补充。 今天,我们将在一个用例中研究窗口函数的出色应用,该用例受到以下堆栈溢出问题Sean Nguyen的启发: 如何从Java 8…

64位内核第二讲,进程保护之对象钩子

64位内核第二讲,进程保护. 一丶什么是保护. 什么是保护. 比如我们安装了xxx杀毒软件.那么此时你用任务管理器关闭.是关闭不了的.原因是内核已经做了保护. 那么去掉保护的前提就是你要给自己的软件做保护. 比如我们给计算器做保护. 例如下图. 做保护.以前的病毒作者.都是想要退出…

java 类 request_java普通类得到request对象

使用拦截器import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.…

Xamarin.Forms Button长按事件

Xamarin.Forms Button长按事件 在平时的开发中,我们经常遇到需要Button能够拥有长按事件,但是在Xamarin.Forms中Button并没有该事件, 此时我们如何来实现呢? 我们知道在Xamarin.Forms中可以通过CustomRenderer来根据不同平台各自处…

java对象写入文件_将Java对象写入文件中

Java对象序列化 首先介绍一下对象序列化的目标:对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。 一、序列化的含义和意义: 序列化机制使得对象可以脱离程序的运行而独立存在。 对象的序列化指将一个Java对象写入IO流中,与此对应的反是,对象的反序列化…

jpql hql_无需部署即可测试JPQL / HQL

jpql hql您是否曾经想在不完全部署应用程序的情况下测试JPQL / HQL? 我们今天在这里看到的是适用于任何JPA实现的简单解决方案:Hibernate,OpenJPA,EclipseLink等。 这篇文章中找到的基本源代码来自本书:“ Pro JPA 2&a…

eclipse 代码上传github 笔记

第一步 先share project 如图所示 第二步 如果所示 第三步 点击 下面的create 然后点击完成 第四步提交 第五步: 第六步: 转载于:https://www.cnblogs.com/a8457013/p/8410471.html

java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

笔者以前学过C语言。众所周知,C也是一门面向对象程序设计语言。还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为然。现在在学java&#x…

[Usaco2008 Feb]Eating Together麻烦的聚餐

Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐。每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想所有第3批就餐的奶牛排在队尾,队伍的前端由设定为第1批就餐的奶牛占据,中间的位置就归第2批就餐的奶牛了…

Keycloak SSO集成到jBPM和Drools Workbench中

介绍 单一登录(SSO)和相关令牌交换机制正在成为Web上不同环境中进行身份验证和授权的最常见方案,尤其是在迁移到云中时。 本文讨论了Keycloak与jBPM或Drools应用程序的集成,以便使用Keycloak上提供的所有功能。 Keycloak是用于浏…

接口 java性能_接口测试性能测试

接口测试 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 原理 通过测试程序模拟客户端向服务…