2017/7/18「第6回スタートアップRails勉強会」での発表スライドです
ҙਤͤ͵ϨεϙϯεΛ͙APIઃܭ2ͭͷίπ2017/7/18 taogawa
View Slide
ࣗݾհ• גࣜձࣾΩονϋΠΫ ΤϯδχΞ• খ ߶ (taogawa)• αʔόʔαΠυΛओʹ୲͍ͯ͠·͢ɻ
ྉཧΛͭ͘Δਓͱ৯ΔਓͷަྲྀίϛϡχςΟαΠτKitchHikehttps://kitchhike.com/
TechBlogͬͯ·͢http://tech.kitchhike.com/ʮDHHྲྀͷϧʔςΟϯάͰಘΒΕΔϝϦοτͱɺऔΓೖΕΔ্ͰͷϙΠϯτʯͱ͍͏هࣄΛॻ͖·ͨ͠
API։ൃʹ͖ͭ·ͱ͏
ʮҙਤͤ͵ϨεϙϯεʯΛ͙ϙΠϯτ
render json: @user.as_json# => response# {# "id": 1,# "first_name": "hike",# "last_name": "kitch",# ...# "password_digest": "xxxxxxxxx" # !!!!!# }
ҙਤͤ͵Ϩεϙϯε• ϢʔβʔຊਓͷΈݟΕΔ͖ඇެ։ใΛϨεϙϯεͰฦ͍ͯ͠Δ• Ծʹඇެ։APIͰ͋ͬͯΫϥΠΞϯτʹσʔλ͕ΔͨΊɺආ͚ͳ͍͚ͯ͘ͳ͍• ҰํͰͪΐͬͱͨ͠ϛεʹΑΔόά͕ೖΓࠐΈ͍͢
ҙਤͤ͵ϨεϙϯεΛઃܭϨϕϧͰ͙
1.Ϩεϙϯε߲ϗϫΠτϦετํࣜ
ϒϥοΫϦετํࣜΛࢭΊΑ͏• ϒϥοΫϦετํࣜϛεΛ͍͢͠• ͍ͭͷ·ʹ͔ΧϥϜ͕ՃΘͬͨ• ϒϥοΫϦετͷ͚Ճ͑࿙Ε• ۩ମతʹݴ͑ as_json ࢭΊͨ΄͏͕͍͍Ͱ͢
beforerender json: @user.as_json# => response# {# "id": 1,# "first_name": "hike",# "last_name": "kitch",# ...# }• as_jsonσϑΥϧτͰશͯͷ߲Λฦ͢ͷͰਏ͍ɾɾɾ
ϗϫΠτϦετํࣜʹ͠Α͏• ϨεϙϯεͰฦ͖߲͢Λ໌จԽ͢Δ• ॻ͔ͳ͍߲Ϩεϙϯεʹؚ·Εͳ͍• ActiveModelSerializer, Jbuilder• as_json ͕ආ͚ΒΕͳͯ͘ɺͤΊͯonlyࢦఆΛ͠Α͏
afterclass UserSerializer < ActiveModel::Serializerattributes :id, :full_namedef full_name"#{object.first_name} #{object.last_name}"endend# => response# {# "id": 1,# "full_name": "hike kitch"# }
2.Ϣʔβʔࣗ/ͦΕҎ֎ͷϦιʔεΤϯυϙΠϯτΛ͚Δ
Α͋͘Δύλʔϯ• ΫΤϦύϥϝʔλͰϨεϙϯεΛग़͚͠Δ• Ϩεϙϯεͷग़͚͠ͷ݅ఆϛε• ެ։Ϧιʔε͚ͩͷͭΓ͕ϢʔβʔͷϓϥΠϕʔτϦιʔεฦ͍ͯͨ͠
before# /kitchens/:id?scope=selfclass KitchensController < ApplicationControllerdef showif params[:scope] == "self"# ...else# ...endendend
͍ͬͦΤϯυϙΠϯτΛ͚Α͏• ΫΤϦύϥϝʔλͰͷ݅ذͰͳ͘ɺίϯτϩʔϥࣗମΛ͚Δ• ϓϥΠϕʔτϦιʔεselfͷωʔϜεϖʔεԼʹҰݩԽ
after# /kitchens/:idclass KitchensController < ApplicationControllerdef showendend# /self/kitchens/:idclass Self::KitchensController < ApplicationControllerdef showendend
ΤϯυϙΠϯτׂͷϝϦοτ• ݅ذͷϛεͷ৺Λͳͤͨ͘• ҆৺ײ͕ͱͯେ͖͍• ͜ͷΤϯυϙΠϯτɺ͜ͷϨεϙϯεɺͷΓ͚͕͖ͬΓͨ͠• ։ൃऀͷೝࣝҧ͍Λͳͤͨ͘
ΤϯυϙΠϯτׂͷσϝϦοτ• વAPIίʔϧ૿͑Δ• N+1ʹͳΒͳ͍ͷͰڐ༰͍ͯ͠Δ• ׂͨ͠ίϯτϩʔϥͰͷίʔυͷॏෳ͕ى͜Γ͍͢• ϞσϧʹίʔυΛدͤͯରԠ
·ͱΊ• ҙਤͤ͵ϨεϙϯεΛฦ͞ͳ͍ઃܭ2ͭͷίπ• ϨεϙϯεϗϫΠτϦετํࣜʹ͢Δ• ݅ذΑΓΤϯυϙΠϯτͷׂ
We’re Hiring!