rails 5 api only

〇、 需求

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

 

一、 获取 rails 5

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

http://www.voidcn.com/article/p-zmbygbdn-boq.html

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

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
      invoke  active_record
      create    db/migrate/20171015063045_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    test_unit
      create      test/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#destroy

2、 访问这些接口

(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"
}

...
相关文章

相关标签/搜索