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

結局RESTfulって何なんだ

JoshNobus
March 10, 2025
53

 結局RESTfulって何なんだ

調べてもよく分からない RESTful の話

以下の記事の発表バージョン
https://zenn.dev/wsuzume/articles/280ba652dc4fc7

JoshNobus

March 10, 2025
Tweet

Transcript

  1. 5BCMFPG$POUFOUT  w 3&45͸ʮઃܭࢥ૝ʯͰ͋Δ w 3&45ͷྺ࢙ w 3&45ͷ֓ཁ w αʔϏε͕औΓѻ͏ର৅͸ϦιʔεͰ͋Δ

    w Ϣʔβʔ͸ΫϥΠΞϯτͱαʔόʔΛհͯ͠ϦιʔεΛࢀরɾૢ࡞͢Δ w εςʔτϨεੑɿαʔϏε͸αʔόʔঢ়ଶΛ࣋ͨͳ͍ w ΞυϨεՄೳੑɿ͢΂ͯͷϦιʔε͸গͳ͘ͱ΋̍ͭͷ63*Λ࣋ͭ w Ϧιʔεঢ়ଶ͸ͦͷදݱΛհͯ͠ࢀরɾૢ࡞͞ΕΔ w ౷Ұ͞ΕͨΠϯλʔϑΣʔεΛఏڙ͢Δ w ϋΠύʔϝσΟΞͱͯ͠ఏڙ͢Δ w 3&45ͷར఺ w 3&45ͷܽ఺
  2. 3&45͸ʮઃܭࢥ૝ʯͰ͋Δ  3&45ͷઃܭࢥ૝ʹଇ͍ͬͯΔ͜ͱΛ3&45GVMͱ͍͏ɻ ͲΕ͘Β͍ଇ͍ͬͯΕ͹3&45GVMͱݺ΂Δ͔ͷܾ·Γ͸ͳ͍ 3&45 ઃܭࢥ૝ "SDIJUFDUVSBM4UZMF ن֨ͱ͔࢓༷͕͋Γ͏Δͷ͸͔͜͜Β ઃܭ "SDIJUFDUVSF

    w 8PSME8JEF8FC w Ϧιʔεࢦ޲ΞʔΩςΫνϟ FUD ϓϩτίϧ࣮૷ 1SPUPDPM*NQMFNFOUBUJPO w (PPHMF4FBSDI"1* w "84"1* w 0QFO"*"1* w (JU)VC"1* w )551 w 63-63* FUD FUD ந৅Խ ந৅Խ ҙݟද໌͘Β͍ͷԹ౓ײ ʢڧ੍ྗͳ͠ʣ ͍͘Βௐ΂ͯ΋ن֨΍ ࢓༷͸ଘࡏ͠ͳ͍
  3. 3&45͸ʮઃܭࢥ૝ʯͰ͋Δ 3&45ͷઃܭࢥ૝ʹଇ͍ͬͯΔ͜ͱΛ3&45GVMͱ͍͏ɻ ͲΕ͘Β͍ଇ͍ͬͯΕ͹3&45GVMͱݺ΂Δ͔ͷܾ·Γ͸ͳ͍  ʹղઆॻʹΑͬͯݴ͍ͬͯΔ͜ͱ͕ҧ͏Մೳੑ΋͋Δ ຊ೔ͷࢀߟจݙ͸ओʹ̐ͭ ʰ"SDIJUFDUVSBM4UZMFTBOEUIF%FTJHOPG /FUXPSLCBTFE4PGUXBSF"SDIJUFDUVSFTʱ $)"15&33FQSFTFOUBUJPOBM4UBUF 5SBOTGFS

    3&45 3PZ5IPNBT'JFMEJOH  8$  ʰ"SDIJUFDUVSFPGUIF8PSME8JEF 8FC 7PMVNF0OFʱ -FPOBSE3JDIBSETPO 4BN3VCZ  -FPOBSE3JDIBSETPO "NVOETFO.JLF  4BN3VCZ  ʰ3&45GVM8FC4FSWJDFTʱ ʰ3&45GVM8FC"1*Tʱ ͪΐͬͱݹ͍͕೔ຊޠ൛͕͋Δ ӳޠ൛͔͠ͳ͍͕ང͔ʹ·ͱ΋ ϓϩτλΠϓײ͋Γ ਖ਼ղ͸ͳ͍͠ɺ࣌୅ʹΑͬͯղऍ΍ॏࢹ͞ΕΔ͜ͱ΋มΘΔ
  4. 5BCMFPG$POUFOUT  w 3&45͸ʮઃܭࢥ૝ʯͰ͋Δ w 3&45ͷྺ࢙ w 3&45ͷ֓ཁ w αʔϏε͕औΓѻ͏ର৅͸ϦιʔεͰ͋Δ

    w Ϣʔβʔ͸ΫϥΠΞϯτͱαʔόʔΛհͯ͠ϦιʔεΛࢀরɾૢ࡞͢Δ w εςʔτϨεੑɿαʔϏε͸αʔόʔঢ়ଶΛ࣋ͨͳ͍ w ΞυϨεՄೳੑɿ͢΂ͯͷϦιʔε͸গͳ͘ͱ΋̍ͭͷ63*Λ࣋ͭ w Ϧιʔεঢ়ଶ͸ͦͷදݱΛհͯ͠ࢀরɾૢ࡞͞ΕΔ w ౷Ұ͞ΕͨΠϯλʔϑΣʔεΛఏڙ͢Δ w ϋΠύʔϝσΟΞͱͯ͠ఏڙ͢Δ w 3&45ͷར఺ w 3&45ͷܽ఺
  5. 3&45ͷྺ࢙  ʰ"SDIJUFDUVSBM4UZMFTBOEUIF%FTJHOPG/FUXPSLCBTFE4PGUXBSF"SDIJUFDUVSFTʱ $)"15&33FQSFTFOUBUJPOBM4UBUF5SBOTGFS 3&45 3&45ͷݪయ 3PZ5IPNBT'JFMEJOH  8$ 

    ʰ"SDIJUFDUVSFPGUIF8PSME8JEF8FC 7PMVNF0OFʱ )551 63-63* 3'$จॻͰنఆ͞Ε͍ͯΔ ೥ʙݱࡏ Өڹ Өڹ ੔ཧ Өڹ 3&45ʹ͍ͭͯॳΊͯৄ͘͠આ໌ͨ͠࿦จ ࿐ࠎʹ3&45ʹݴٴ͢Δ͜ͱ͸ͳ͍͕ɺ 63*΍)551Λ༻͍ͨΞʔΩςΫνϟΛߏங͢Δ্Ͱͷਪ঑ࣄ߲Λ·ͱΊͨจॻ ͏·͘࢖͑͹3&45GVMʹͰ͖ΔΑ͏ઃܭ͞Ε͍ͯΔ 㱻͜ΕΒΛ࢖͔ͬͨΒͱ͍ͬͯ3&45GVMͰ͸ͳ͍
  6. 3&45ͷྺ࢙  3&45ͷݪయ )551 63-63* 3'$จॻͰنఆ͞Ε͍ͯΔ ೥ʙݱࡏ Өڹ Өڹ ੔ཧ

    Өڹ 3&45ʹ͸ҙ஍Ͱ΋ݴٴ͠ͳ͍ ʢ3&45͸ઃܭࢥ૝Ͱ͋ͬͯઃܭͰ͸ͳ͍͔Βʣ w ιϑτ΢ΣΞ޻ֶʹ͓͚ΔݪଇʹΑΔ੍໿͔Β3&45Λಋग़͢Δաఔ w 3&45͸̐ͭͷΠϯλʔϑΣʔε੍໿͔Βఆٛ͞ΕΔ w 3&45ઃܭͷݪଇ ݱࡏͰ͸΄΅ݴٴ͞Εͳ͍ ಛʹϓϩτίϧ࢓༷ͷઃܭऀ͸ɺ3&45ϞσϧΛཧղ͠ɺͦͷݪଇ͕ಛఆͷઃܭ ʹͲͷΑ͏ʹؔ࿈͢Δ͔ΛֶͿ͜ͱʹ࣌ؒΛ౤ࢿ͢΂͖Ͱ͋Δɻ͜ΕΒͷݪଇʹ ͸ɺεςʔτϨεੑɺίϯϙʔωϯτ΁ͷ໌֬ͳ໾ׂͷׂΓ౰ͯɺҰ؏ͨ͠Ξυ Ϩεۭؒɺͦͯ͠ݶఆ͞Εͨ౷Ұతͳಈࢺͷηοτؚ͕·ΕΔɻ ʮ"SDIJUFDUVSBM4UZMFTBOEUIF%FTJHOPG/FUXPSLCBTFE4PGUXBSF ɹɹ"SDIJUFDUVSFTʯୈষʢ35'JFMEJOHͷത࢜࿦จ ೥ʣɻ ʮ3&45ͷݪଇʯͱ͍͏ݴ༿ݣ͍͸͜Ε͕ݪҼͬΆ͍ʁ ʮ3&45ͷݪଇʯͱ͍͏ ݴ༿ݣ͍͸ొ৔͠ͳ͍
  7. 5BCMFPG$POUFOUT  w 3&45͸ʮઃܭࢥ૝ʯͰ͋Δ w 3&45ͷྺ࢙ w 3&45ͷ֓ཁ w αʔϏε͕औΓѻ͏ର৅͸ϦιʔεͰ͋Δ

    w Ϣʔβʔ͸ΫϥΠΞϯτͱαʔόʔΛհͯ͠ϦιʔεΛࢀরɾૢ࡞͢Δ w εςʔτϨεੑɿαʔϏε͸αʔόʔঢ়ଶΛ࣋ͨͳ͍ w ΞυϨεՄೳੑɿ͢΂ͯͷϦιʔε͸গͳ͘ͱ΋̍ͭͷ63*Λ࣋ͭ w Ϧιʔεঢ়ଶ͸ͦͷදݱΛհͯ͠ࢀরɾૢ࡞͞ΕΔ w ౷Ұ͞ΕͨΠϯλʔϑΣʔεΛఏڙ͢Δ w ϋΠύʔϝσΟΞͱͯ͠ఏڙ͢Δ w 3&45ͷར఺ w 3&45ͷܽ఺
  8. 3&45ͷ֓ཁ  αʔϏε͕औΓѻ͏ର৅͸ϦιʔεͰ͋Δ w Ϧιʔε͸࣌ؒͷؔ਺Ͱ͋Δɻ w ϦιʔεͷηϚϯςΟΫε͸ Ϣʔβʔ΍࣌ؒʹରͯ͠ෆมͰ͋Δɻ R(t) 3FTPVSDF

    4FSWJDF ถେ౷ྖ ໌೔ͷఱؾ ϦιʔεͰ͋Δ ϦιʔεͰ͸ͳ͍ ސ٬ͷσʔλ ࠷دӺ ʢࢦࣔର৅͕ಛఆͰ͖ͳ͍֓೦͢΂ͯʣ ເ ָԂ ৽ੈք FUD FUD
  9. 3&45ͷ֓ཁ  εςʔτϨεੑɿαʔϏε͸αʔόʔঢ়ଶΛ࣋ͨͳ͍ 4FSWJDF R(t) 3FTPVSDF $MJFOU 4FSWFS 3FRVFTU 3FTQPOTF

    ࢀরɾૢ࡞ ΫϥΠΞϯτঢ়ଶ αʔόʔঢ়ଶ Ϧιʔεঢ়ଶ αʔόʔঢ়ଶɿηογϣϯ؅ཧʹ༻͍Δ৘ใ΍αʔόʔݻ༗ͷ৘ใͳͲ ˞αʔόʔঢ়ଶΛॲཧͷதʹ૊ΈࠐΉͱɺεέʔϥϏϦςΟ͕Լ͕ΔͨΊ
  10. 3&45ͷ֓ཁ  ΞυϨεՄೳੑɿ͢΂ͯͷϦιʔε͸গͳ͘ͱ΋̍ͭͷ63*Λ࣋ͭ 4FSWJDF R(t) 3FTPVSDF $MJFOU 4FSWFS 3FRVFTU 3FTQPOTF

    ࢀরɾૢ࡞ 63*ʹΑͬͯͲͷϦιʔεΛࢀরɾૢ࡞͢Δ͔ಛఆ͢Δ ˞63*͕ଘࡏ͠ͳ͍Ϧιʔεʹ͸ΞΫηε͠Α͏͕ͳ͍ͨΊ
  11. 3&45ͷ֓ཁ  Ϧιʔεঢ়ଶ͸ͦͷදݱΛհͯ͠ࢀরɾૢ࡞͞ΕΔ දݱɿϦιʔεঢ়ଶΛे෼ʹಛఆͰ͖Δจࣈྻ·ͨ͸όΠτྻͷ͜ͱ ʢ)5.- 9.- +40/ 47( 1/( FUDʣ

    4FSWJDF R(t) 3FTPVSDF $MJFOU 4FSWFS 3FRVFTU 3FTQPOTF ࢀরɾૢ࡞ Ϧιʔεঢ়ଶ 3FQSFTFOUBUJPO දݱ औΓग़͢ ຒΊࠐΉ දݱ௨Γͷঢ়ଶʹ ରԠͤ͞Δ ঢ়ଶʹରԠ͢Δ දݱΛฦ͢ αʔόʔͷ໾ׂ ˞͜Ε͕3FQSFTFOUBUJPOBM4UBUF5SBOTGFSͷ༝དྷ
  12. 3&45ͷ֓ཁ  ౷Ұ͞ΕͨΠϯλʔϑΣʔεΛఏڙ͢Δ w 63*ͷ໋໊نଇʹҰ؏ੑΛ༩͑Δ w ਖ਼ن63*ΛఆΊΔ 63* 3FRVFTU 3FTQPOTF

    w ަ׵͞ΕΔ৘ใΛϝσΟΞλΠϓʹࣔ͢ w )551ಈࢺͰϝοηʔδͷҙຯΛಛఆ͢Δ ʢ҆શੑɺႈ౳ੑͳͲ΋ॱक͢Δʣ w ਖ਼ن63*Ҏ֎΁ͷΞΫηεʹ͸ਖ਼ن63*Λฦ͢ w ΩϟογϡՄೳͳظؒΛ໌ࣔతʹࣔ͢ w ΫΤϦ͸ϦιʔεͷಛఆͷΈʹ༻͍Δ ʢϦιʔεʹߦ͏ૢ࡞Λಛఆ͢ΔͨΊʹΫΤϦΛ༻͍ͯ͸ͳΒͳ͍ʣ w ద੾ͳεςʔλείʔυΛฦ͢ ˞ҎԼ͸ॾઆ͋Δ͏ͪͷҰ෦Ͱ͢ ʢݪ࿦จʹ͸໌֬ͳઆ໌͕͋Γ·ͤΜʣ ಛʹ͜Εͷ͜ͱΛ ݴ͍ͬͯΔ৔߹͕ଟ͍
  13. 3&45ͷ֓ཁ  ϋΠύʔϝσΟΞͱͯ͠ఏڙ͢Δ ؆୯ʹݴ͑͹ɺϢʔβʔ͕࣍ʹߦ͏΂͖ߦͬͯ΄͍͠ߦ͏͜ͱ͕Ͱ͖Δ ΞΫγϣϯͷީิΛϨεϙϯεʹϦϯΫ΍ϑΥʔϜͷܗࣜͰؚΊΔ͜ͱ ର৅ͷϦιʔε ؔ࿈͢Δ֎෦ϦϯΫ ฤू ৽ن࡞੒ యܕతͳαʔϏεը໘

    ண໨͍ͯ͠ΔϦιʔεͱͦΕʹରͯ͠ ͲΜͳૢ࡞͕ߦ͑Δ͔ɺ͓Αͼ ؔ࿈৘ใͳͲ͕෼͔Δɻ Ϧιʔεঢ়ଶͷભҠ͸ )551ϦΫΤετͰදݱ͞ΕΔ 165 1045 165 %&-&5& %&-&5& (&5 (&5 ͲΜͳϦΫΤετΛ౤͛ΒΕΔͷ͔Λ ϨεϙϯεʹؚΊΔ
  14. 5BCMFPG$POUFOUT  w 3&45͸ʮઃܭࢥ૝ʯͰ͋Δ w 3&45ͷྺ࢙ w 3&45ͷ֓ཁ w αʔϏε͕औΓѻ͏ର৅͸ϦιʔεͰ͋Δ

    w Ϣʔβʔ͸ΫϥΠΞϯτͱαʔόʔΛհͯ͠ϦιʔεΛࢀরɾૢ࡞͢Δ w εςʔτϨεੑɿαʔϏε͸αʔόʔঢ়ଶΛ࣋ͨͳ͍ w ΞυϨεՄೳੑɿ͢΂ͯͷϦιʔε͸গͳ͘ͱ΋̍ͭͷ63*Λ࣋ͭ w Ϧιʔεঢ়ଶ͸ͦͷදݱΛհͯ͠ࢀরɾૢ࡞͞ΕΔ w ౷Ұ͞ΕͨΠϯλʔϑΣʔεΛఏڙ͢Δ w ϋΠύʔϝσΟΞͱͯ͠ఏڙ͢Δ w 3&45ͷར఺ w 3&45ͷܽ఺
  15. 3&45ͷར఺  ֤ίϯϙʔωϯτͷಠཱੑ͕ߴ͍ ֊૚Խ͕༰қ εέʔϥϒϧ ΩϟογϡՄೳ $MJFOU $BDIF $BDIF 4FSWFS

    -# 4FSWFS εςʔτϨεੑ ॲཧʹඞཁͳ͢΂ͯͷ৘ใ͕ ϦΫΤετʹؚ·ΕΔ ༗ޮظ͕ؒϨεϙϯε ʹؚ·ΕΔ
  16. 3&45ͷܽ఺  ֊૚Խ͕༰қ εέʔϥϒϧ ΩϟογϡՄೳ $MJFOU $BDIF $BDIF 4FSWFS -#

    4FSWFS εςʔτϨεੑ ֊૚͕૿͑Δʹ͕ͨͬͯ͠ϨΠςϯγ͕ ૿େͯ͠69͕௿Լ͢ΔՄೳੑ͕͋Δ σʔλͷऔಘ͸ఏڙ͞Ε͍ͯΔ දݱͷΈͰॊೈͳऔಘ͸Ͱ͖ͳ͍ ࠷৽ͷ৘ใͱ৯͍ҧ͏ Մೳੑ͕͋Δ ׬શʹεςʔτϨεʹ͢Δͷ͕ ͦ΋ͦ΋͚ͬ͜͏೉͍͠ ա৒ͳྔͷσʔλΛऔಘ͕ͪ͠ ετϦʔϛϯά΋ۤख
  17. ଞͱͷ࢖͍෼͚  $MJFOU $BDIF $BDIF 4FSWFS -# 4FSWFS σʔλͷऔಘ͸ఏڙ͞Ε͍ͯΔ දݱͷΈͰॊೈͳऔಘ͸Ͱ͖ͳ͍

    w ॊೈʹσʔλऔಘ͍ͨ͠ w खଓతͳΞʔΩςΫνϟʹ͍ͨ͠ w ετϦʔϛϯά͍ͨ͠ 3&45͸એݴతͳΞʔΩςΫνϟελΠϧ (SBQI2- 31$ ଞͷԿ͔ʁ ৄ͘͠ͳͯ͘͢Έ·ͤΜ )551-JWF4USFBNJOHͱ͔΋ ͋ΔΒ͍͠Ͱ͕͢ʜʜ
  18. ؔ࿈ࢿྉͷ࣌ܥྻ  "SDIJUFDUVSBM4UZMFTBOE UIF%FTJHOPG/FUXPSL CBTFE4PGUXBSF "SDIJUFDUVSFT  $)"15&3 3&45ͷݪయ 3'$)5514FNBOUJDT

    3&45GVM8FC4FSWJDFT ೥ 3'$)ZQFSUFYU 5SBOTGFS1SPUPDPM )551 ೥ 3'$)ZQFSUFYU 5SBOTGFS1SPUPDPM )551 ೥ ೥ ೥ 3&45GVM8FC"1*T ೥ "SDIJUFDUVSFPGUIF 8PSME8JEF8FC  7PMVNF0OF ೥ 3'$6OJGPSN 3FTPVSDF-PDBUPST 63- ೥ 3'$6OJGPSN 3FTPVSDF*EFOUJ fi FS 63* (FOFSJD4ZOUBY ೥ 3'$)551 ೥ ೥ 3'$ )ZQFSUFYU5SBOTGFS 1SPUPDPM7FSTJPO )551