Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RESTful Web Application by Laravel

RESTful Web Application by Laravel

LaravelでRESTfulなアプリケーションを実現するために必要な知識と設計思想、HTTPメソッドと安全性/パワーを理解し、その重要性を理解する。

よしたろう

May 23, 2022
Tweet

More Decks by よしたろう

Other Decks in Programming

Transcript

  1. •Laravel Ͱ RESTful ͳ Web ΞϓϦ Λ࡞ΕΔ •֤ HTTP ϝιουͷ࢖͍෼͚

    •҆શੑͱႈ౳ੑɺͦͯͦ͠ͷॏཁੑ ̍.ࠓ೔ͷ໨ඪ
  2. •REpresentational State Transferͷུ •Representation ͸ දݱ •State = ঢ়ଶ •Transfer

    = సૹ •දݱͱ͸ɺWebαʔόͷૹ৴͢ΔResourcesͷܗࣜ •Resourcesͱ͸ɺWeb্ʹଘࡏ͢Δ৘ใɺσʔλͷ͜ͱ REST
  3. 4. HTTPϝιου ϝιου ҙຯ (&5 Ϧιʔεͷऔಘ 1045 Ϧιʔεͷ࡞੒ɺσʔλ௥Ճɺͦͷଞॲཧ 165 Ϧιʔεͷ࡞੒ɺߋ৽

    1"5$) Ϧιʔεͷ෦෼ஔ׵ %&-&5& Ϧιʔεͷ࡟আ )&"% Ϧιʔεͷϔομ ϝλσʔλͷऔಘ 015*0/4 Ϧιʔε͕αϙʔτ͍ͯ͠Δϝιουͷऔಘ 53"$& ϓϩΩγಈ࡞ͷ֬ೝ $0/&$5 ϓϩΩγಈ࡞ͷτϯωϧ઀ଓ΁ͷมߋ $36%໊ ҙຯ ϝιου ʢࢀߟʣ42- $SFBUF ࡞੒ 1045 165 JOTFSU 3FBE ಡΈࠐΈ (&5 TFMFDU 6QEBUF ߋ৽ 165 1"5$) VQEBUF %FMFUF ࡟আ %&-&5& EFMFUF
  4. 4. HTTPϝιου ϝιου ҙຯ (&5 Ϧιʔεͷऔಘ 1045 Ϧιʔεͷ࡞੒ɺσʔλ௥Ճɺͦͷଞॲཧ 165 Ϧιʔεͷ࡞੒ɺߋ৽

    1"5$) Ϧιʔεͷ෦෼ஔ׵ %&-&5& Ϧιʔεͷ࡟আ )&"% Ϧιʔεͷϔομ ϝλσʔλͷऔಘ 015*0/4 Ϧιʔε͕αϙʔτ͍ͯ͠Δϝιουͷऔಘ 53"$& ϓϩΩγಈ࡞ͷ֬ೝ $0/&$5 ϓϩΩγಈ࡞ͷτϯωϧ઀ଓ΁ͷมߋ $36%໊ ҙຯ ϝιου ʢࢀߟʣ42- $SFBUF ࡞੒ 1045 165 JOTFSU 3FBE ಡΈࠐΈ (&5 TFMFDU 6QEBUF ߋ৽ 165 1"5$) VQEBUF %FMFUF ࡟আ %&-&5& EFMFUF
  5. 4. HTTPϝιου ϝιου ҙຯ (&5 Ϧιʔεͷऔಘ 1045 Ϧιʔεͷ࡞੒ɺσʔλ௥Ճɺͦͷଞॲཧ 165 Ϧιʔεͷ࡞੒ɺߋ৽

    1"5$) Ϧιʔεͷ෦෼ஔ׵ %&-&5& Ϧιʔεͷ࡟আ )&"% Ϧιʔεͷϔομ ϝλσʔλͷऔಘ 015*0/4 Ϧιʔε͕αϙʔτ͍ͯ͠Δϝιουͷऔಘ 53"$& ϓϩΩγಈ࡞ͷ֬ೝ $0/&$5 ϓϩΩγಈ࡞ͷτϯωϧ઀ଓ΁ͷมߋ $36%໊ ҙຯ ϝιου ʢࢀߟʣ42- $SFBUF ࡞੒ 1045 165 JOTFSU 3FBE ಡΈࠐΈ (&5 TFMFDU 6QEBUF ߋ৽ 165 1"5$) VQEBUF %FMFUF ࡟আ %&-&5& EFMFUF
  6. 4. HTTPϝιου ϝιου ҙຯ (&5 Ϧιʔεͷऔಘ 1045 Ϧιʔεͷ࡞੒ɺσʔλ௥Ճɺͦͷଞॲཧ 165 Ϧιʔεͷ࡞੒ɺߋ৽

    1"5$) Ϧιʔεͷ෦෼ஔ׵ %&-&5& Ϧιʔεͷ࡟আ )&"% Ϧιʔεͷϔομ ϝλσʔλͷऔಘ 015*0/4 Ϧιʔε͕αϙʔτ͍ͯ͠Δϝιουͷऔಘ 53"$& ϓϩΩγಈ࡞ͷ֬ೝ $0/&$5 ϓϩΩγಈ࡞ͷτϯωϧ઀ଓ΁ͷมߋ $36%໊ ҙຯ ϝιου ʢࢀߟʣ42- $SFBUF ࡞੒ 1045 165 JOTFSU 3FBE ಡΈࠐΈ (&5 TFMFDU 6QEBUF ߋ৽ 165 1"5$) VQEBUF %FMFUF ࡟আ %&-&5& EFMFUF ΍ͬͯΔ͜ͱҰॹʁ
  7. PUT ϝιουͱ POST ϝιουͷҧ͍ POST PUT Ϧιʔεͷ ࡞੒ ⭕ ⭕

    Ϧιʔεͷ 63*ࢦఆ ❌ ⭕ 63*ͷ ܾఆݖ αʔόଆ ΫϥΠΞϯτଆ αʔόͱͷ ݁߹౓ ૄ ີ ޲͍ͯΔ 8FCαʔϏε 5XJUUFS 8JLJQFEJB جຊతͳ ࢖༻ํ๏ Ϧιʔε৽ن࡞੒ Ϧιʔεߋ৽
  8. 5. ҆શੑͱႈ౳ੑ ҆શੑ ႈ౳ੑ Ϧιʔεͷঢ়ଶΛมԽͤͣ͞ ಡΈऔΓઐ༻ͷ΋ͷɻ ϦΫΤετͯ͠΋୯ʹͦͷ࣌఺Ͱ ͷϦιʔεͷදݱΛऔಘ͍ͯ͠Δ ͚ͩɻ(&5͸҆શ ಉ͡ૢ࡞Λ܁Γฦͯ͠΋݁Ռ͕ಉ͡

    ˣ ʮಉҰύϥϝʔλʔͰճҎ্Ϧ ΫΤετͯ͠΋ɺϦιʔεͷঢ়ଶ͕ ಉ͡Ͱ͋Δ͜ͱʯ 165΍%&-&5&͸ႈ౳ ΫϥΠΞϯτ͕ະ஌ͷ63*ʹΞΫ ηεͯ͠΋֐͕ͳ͍͜ͱ͋Δఔ౓ อূͰ͖Δ γεςϜݎ࿚ੑɺ৘ใ੔߹ੑɺΫ ϥΠΞϯτʹϦΫΤετͷϦτϥ ΠՄ൱Λ௨஌
  9. ຊདྷͷʮႈ౳ʯͷ໨త WebServer WebClient ᶄ௨৴ো֐ʹΑΓ Ϩεϙϯε͕ಧ͔ͳ͍ ϦΫΤετ ❌ ϦΫΤετϦτϥΠ ᶅαʔό͸ϦτϥΠʹΑΔ Ϧιʔεͷෆ੔߹͔Βอޢ

    ͠ͳͯ͘͸͍͚ͳ͍ ᶆϦτϥΠʹΑΔϦιʔε ͷ੔߹ੑ͕อূ͞Εͳͯ͘͸ Ή΍ΈʹϦτϥΠͰ͖ͳ͍ ᶃϦΫΤετ͠੒ޭ
  10. ຊདྷͷʮႈ౳ʯͷ໨త WebServer WebClient ᶄ௨৴ো֐ʹΑΓ Ϩεϙϯε͕ಧ͔ͳ͍ ϦΫΤετ ❌ ϦΫΤετϦτϥΠ ᶅαʔό͸ϦτϥΠʹΑΔ Ϧιʔεͷෆ੔߹͔Βอޢ

    ͠ͳͯ͘͸͍͚ͳ͍ ᶆϦτϥΠʹΑΔϦιʔε ͷ੔߹ੑ͕อূ͞Εͳͯ͘͸ Ή΍ΈʹϦτϥΠͰ͖ͳ͍ ᶃϦΫΤετ͠੒ޭ ႈ౳ੑ
  11. ຊདྷͷʮႈ౳ʯͷ໨త WebServer WebClient ᶄ௨৴ো֐ʹΑΓ Ϩεϙϯε͕ಧ͔ͳ͍ ϦΫΤετ ❌ ϦΫΤετϦτϥΠ ᶅαʔό͸ϦτϥΠʹΑΔ Ϧιʔεͷෆ੔߹͔Βอޢ

    ͠ͳͯ͘͸͍͚ͳ͍ ᶆϦτϥΠʹΑΔϦιʔε ͷ੔߹ੑ͕อূ͞Εͳͯ͘͸ Ή΍ΈʹϦτϥΠͰ͖ͳ͍ ᶃϦΫΤετ͠੒ޭ ႈ౳ੑ ಉ͡ૢ࡞Λ܁Γฦͯ͠΋݁Ռ͕ಉ͡ ಉҰύϥϝʔλʔͰճҎ্ϦΫΤετͯ͠΋ɺ
  12. ຊདྷͷʮႈ౳ʯͷ໨త WebServer WebClient ᶄ௨৴ো֐ʹΑΓ Ϩεϙϯε͕ಧ͔ͳ͍ ϦΫΤετ ❌ ϦΫΤετϦτϥΠ ᶅαʔό͸ϦτϥΠʹΑΔ Ϧιʔεͷෆ੔߹͔Βอޢ

    ͠ͳͯ͘͸͍͚ͳ͍ ᶆϦτϥΠʹΑΔϦιʔε ͷ੔߹ੑ͕อূ͞Εͳͯ͘͸ Ή΍ΈʹϦτϥΠͰ͖ͳ͍ ᶃϦΫΤετ͠੒ޭ ႈ౳ੑ ಉ͡ૢ࡞Λ܁Γฦͯ͠΋݁Ռ͕ಉ͡ ಉҰύϥϝʔλʔͰճҎ্ϦΫΤετͯ͠΋ɺ Ϧιʔεͷঢ়ଶ͕ ಉ͡Ͱ͋Δ͜ͱ
  13. API ͱ Web API ͷҧ͍ API Web API ൺ ֱ

    ද Application Programming Interface Web API ֓ཁ ػೳΛ࢖͏૭ޱ OSɾϛυϧ΢ΣΞɾΞϓϦ͕ ͦͷଞͷϓϩάϥϜ͔Β ࣗ෼ͷػೳΛݺͼग़ͨ͢Ίʹ ఏڙ͢Δ૭ޱʢͷΑ͏ͳ΋ͷʣ Πϯλʔωοτ ܦ༝ͷ"1* Ͳ͜ ͔Β ಉ͡1$಺ɺ΋͘͠͸ -"/ͳͲͷดͨ͡ ωοτϫʔΫܦ༝ Πϯλʔωοτ ܦ༝ ࢖༻ ٕज़ C#ɺC++ɺ7# ͳͲͷ։ൃݴޠ RPC Net Frame ͳͲ SOAPɺREST ͳͲ
  14. ˒ϝϦοτ ΞϓϦέʔγϣϯͷதͷϦιʔε͕URIͰࣔͤΔɻ ɹΞυϨεཝʹೖྗ͢Ε͹ɺͦͷϦιʔεΛࢀরͰ͖Δɻ ɹ˒ͲͷϦιʔεΛૢ࡞͠Α͏ͱ͍ͯ͠Δ͔͕Θ͔Δɻ URIʹنଇ͕ੜ·ΕΔ͜ͱͰɺར༻͢Δ։ൃऀָ͕ʹͳΔɻ ɹ˒কདྷ૝ఆ͞ΕΔγεςϜن໛ͷ૿େʹରԠՄೳͳઃܭͰ͋Δɻ εςʔτϨεʹ͢Δ͜ͱͰɺεέʔϥϏϦςΟ͕޲্ɻ ɹ˒ΞΫηεͷूதʹ଱͑΍͍͢ߏ଄ʹͰ͖Δɻ ౷߹ͷ૬ରతͳ༰қ͞ ɹ˒ඪ४తͳσʔλϑΥʔϚοτ(XML΍JSON)Λѻ͏͜ͱͰɺ

    ɹɹଞγεςϜͱͷ࿈ܞ͕༰қʹͳΔɻ ɹ˒RESTʹج͍ͮͨWebΞϓϦͰ͸ɺΠϯλϑΣʔε͕ݻఆ͞Ε͍ͯΔҝ ɹɹޓ׵ੑͷ໰୊͕ൃੜ͠ͳ͍ɻ ඪ४తͳAPIͷఏڙ ɹRESTfulAPIΛެ։͢Δ͜ͱͰɺ ɹඪ४తͳσʔλϑΥʔϚοτΛ࢖͍ɺଟ༷ͳΞϓϦέʔγϣϯΛఏڙ͢Δ͜ͱ͕Ͱ͖Δɻ ˒σϝϦοτ ɾRESTͷ੍໿ ɹ˒ϓϩάϥϛϯάݴޠ͸Ϧιʔεࢦ޲Ͱ͸ͳ͍ͷͰɺURIͱϚοϐϯά͢Δίʔυ͸Ԛ͘ͳΓ͕ͪ ɹREST APIΛϋΠύʔςΩετۦಈʹ͢Δͷ͸ൺֱత೉͍͠ɻ RESTful Web APIͱ͸