rails 5 api only

2017-10-16 10:11:24来源:oschina作者:YuDong7人点击

分享
〇、 需求

听说 rails 5 中有一项新特性是可以使用 Rails 开发只提供 API 的应用,想试试。

一、 获取 rails 5

由于很多项目是基于 rails 其他版本的,为了安全起见,使用 rvm 创建一个 rails 的单独 gemset :


https://my.oschina.net/yudongyang/blog/1549248


试用时主要参考如下两篇文章 :


1、 rails 5 的 guide :https://ruby-china.github.io/rails-guides/api_app.html


2、Santiago Pastorino 写的 How to Build a Rails 5 API Only and Ember Application


https://wyeworks.com/blog/2015/6/30/how-to-build-a-rails-5-api-only-and-ember-application/


这篇确实可以!

二、 使用 rails 5 提供 的 --api 创建项目
1、 生成项目

在 raisl new 命令后面加上 --api 表示生 api only 项目


$ rails new my_api --api
2、 bundle install

不解释。


$ cd my_api_pro
$ vim Gemfile
# 将 source 'https://rubygems.org' 替换成 source 'https://ruby.taobao.org'
$ bundle install
3、 跑项目

肯定能Yay! You’re on Rails! 吧


$ rails s 三、 使用 rails 5 提供的 api only scaffold
1、 运行 generate
$ rails g scaffold user username:string status:integer
invokeactive_record
createdb/migrate/20171015063045_create_users.rb
createapp/models/user.rb
invoketest_unit
createtest/models/user_test.rb
createtest/fixtures/users.yml
invokeresource_route
routeresources :users
invokescaffold_controller
createapp/controllers/users_controller.rb
invoketest_unit
createtest/controllers/users_controller_test.rb

可以看到,在 api only 中的 generate 中只生成了 migrate model controller & route ,并没有生成 view 相关的内容。


2、 跑迁移
$ rake db:migrate
3、访问

在浏览器中打开其中一条路由地址 : http://127.0.0.1:3000/users , 注意,看到这一对 [ ] 表示已经成功访问到 api 接口了。


四、 其他生成的接口
1、 查看路由

可以看到,在 api only 中生成的路由只有 index create show update & destroy


$ rake routes
Prefix Verb URI Pattern Controller#Action
users GET/users(.:format) users#index
POST /users(.:format) users#create
user GET/users/:id(.:format) users#show
PATCH/users/:id(.:format) users#update
PUT/users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy2、 访问这些接口
(1) Advanced REST client

使用 chrome 的一个插件 Advanced REST client 模拟各种请求,个人常用这个插件进行简单的 rest 调用测试


(2) 调用接口

设置Content-Type: application/json , 选择 post ,访问 :http://127.0.0.1:3000/users ,即可成功访问 create 路由地址,可以看到结果,其他路由选择对应的 mothod 和路径也能同理访问。



截图麻烦,大概就是这样子:


get http://127.0.0.1:3000/users
[
{
"id": 1,
"username": null,
"status": 1,
"created_at": "2017-10-15T07:28:37.302Z",
"updated_at": "2017-10-15T07:28:37.302Z"
},
{
"id": 2,
"username": "YuDong",
"status": 1,
"created_at": "2017-10-15T07:29:07.841Z",
"updated_at": "2017-10-15T07:29:07.841Z"
}
]
put http://127.0.0.1:3000/users/1
{"username":"admin", "status": 1}
{
"id": 1,
"username": "admin",
"status": 1,
"created_at": "2017-10-15T07:28:37.302Z",
"updated_at": "2017-10-15T07:52:55.613Z"
}
...

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台