rails api in rails 5

20
RailsAPI in Rails 5 神山.rb #2 Sansan 株式会社 本田 陽平(@yonda)

Upload: yohei-honda

Post on 16-Apr-2017

662 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Rails API in Rails 5

RailsAPI in Rails 5

神山.rb #2Sansan 株式会社 本田 陽平(@yonda)

Page 2: Rails API in Rails 5

自己紹介

Sansan 株式会社

オペレーション部 開発部

本田 陽平

東京在住

github : yonda

最近の関心ごと : リゾートワーク

Page 3: Rails API in Rails 5

始めに

● 祝・神山.rb 第二回!!○ 第一回の開催の直前まで神山にいた○ けど、諸事情で参加できず。。。

Page 4: Rails API in Rails 5
Page 5: Rails API in Rails 5

Rails 5 にRails API 入りますね

Page 6: Rails API in Rails 5

そんなわけでRails API のおさらいです

Page 7: Rails API in Rails 5

Rails-API とは

● Rails 5 で入る新機能○ もともと rails-api という Gem があり、それを Rails 本体

に取り込んだもの

● API のみのアプリケーションを作ることに特化した scaffold を提供してくれる

Page 8: Rails API in Rails 5

Usage

$ rails new <application-name> --api

Page 9: Rails API in Rails 5

ただの rails new との主な違い

Page 10: Rails API in Rails 5

Gemfile

● API だけだったら必要ない Gem が入ってこない● jbuilder ではなく active_model_serializers

が入っている

Page 11: Rails API in Rails 5

Gemfile

Page 12: Rails API in Rails 5

jbuilder ではなく AMS

● rails-api の PR でも結構議論されていた部分● PR での議論読んでみた

○ 正直英語わからんった :bow:○ もともと rails-api gem が AMS を採用していた○ json-api の仕様に則っている○ AMS だったらルートごとに view つくらなくていい

● 噂によると partial つかったり array object を render するばあいは AMS の方が高速らしい

Page 13: Rails API in Rails 5

config/application.rb

config.api_only = true

→ この設定よって scaffold の挙動が変わってくる

Page 14: Rails API in Rails 5

rails g scaffold の挙動

● 作られるファイルが異なる● 始めから用意されるルートが異なる● controller の処理が json だけ返すようになって

いる

Page 15: Rails API in Rails 5

作られるファイルが異なる

Page 16: Rails API in Rails 5

始めから用意されるルート

Web View 用の edit や new はつくられない

Page 17: Rails API in Rails 5

Controller の処理

Page 18: Rails API in Rails 5

Serializer

Page 19: Rails API in Rails 5

感想

● 何か新しいことができるようになったというより、API だけのアプリケーションを作るときの指針を Rails で指し示したような感じ

● シンプルな API アプリなら AMS 使いやすそう

○ (AMS を使い込んでいないからか)逆に jbuilder の方が

柔軟な整形がしやすいイメージ● jbuilder と AMS の共存は面倒くさそう

○ view と serializer の両方を管理する必要あり○ というかできるのか?

Page 20: Rails API in Rails 5

ご清聴ありがとうございました