https://gocon.jp/2021autumn/sessions/handmade-http-router/
net/httpͰͭ͘ΔHTTPϧʔλʔࣗ࡞ೖ@bmf_san Go Conference 2021 Autumn
View Slide
• Kenta Takeuchi• @bmf_san• גࣜձࣾϚΫΞέ/Re-ArchitectureνʔϜ• ֤छΤϯδχΞืूதͰ͢ʂࣗݾհ
ࠓ͢͜ͱGoͰඪ४ύοέʔδ͚ͩΛͬͯɺ HTTPϧʔλʔΛࣗ࡞͢Δ
͜Μͳํʹ• Goͷॳֶऀ• GoͰԿ͔࡞ͬͯΈ͍ͨਓ• ݴޠΘͣHTTPϧʔλʔΛ࡞ͬͯΈ͍ͨਓ
ࣗ࡞ͯ͠ΈΔͱɾɾ• net/httpͷཧղΛਂΊΔ͖͔͚ͬʹ• ΞϧΰϦζϜͱσʔλߏΛֶͿ͖͔͚ͬʹ• ੈͷதͷHTTPϧʔλʔͷߏ͕େମ͔ΔΑ͏ʹ• ࣗ࡞ͷϧʔλʔͰΞϓϦΛ࡞ΕΔΑ͏ʹ
લఏ• Goͷجຊతͳจ๏ͷཧղ• Կ͔͠ΒͷHTTPϧʔλʔΛͬͨ͜ͱ͕͋Δ
Zenn Book
࣍• HTTPϧʔλʔͱԿ͔• HTTPϧʔλʔͷσʔλߏ• net/httpʹ͍͓͖͍ͭͯͬͯͨ͜ͱ• ࣮ͷհ
HTTPϧʔλʔͱ• ϦΫΤετ͞ΕΔURLͱϨεϙϯεͷॲཧΛ݁ͼ͚ͭΔ
HTTPϧʔλʔͷσʔλߏ• ϦΫΤετ͞ΕΔURLͱϨεϙϯεͷॲཧΛ݁ͼ͚ͭΔURLͱॲཧ͕Ϛοϐϯά͞Εͨσʔλ͕ඞཁ
HTTPϧʔλʔͷσʔλߏ• URLͷ֊ → ߏͱͯ͠දݱ
• ʹϊʔυΛՃ͢Δ㲈ϧʔτͷఆٛ• ͔ΒϊʔυΛ୳ࡧ͢Δ㲈ϧʔςΟϯάHTTPϧʔλʔͷσʔλߏ
net/httpʹ͍͓͖͍ͭͯͬͯͨ͜ͱᶃ• ʮϚϧνϓϨΫαʯͱʮϋϯυϥʯ• ϚϧνϓϨΫα• ϦΫΤετͷURLΛొࡁΈͷύλʔϯͱরΒ͠߹Θͤͯɺ࠷Ϛον͢ΔϋϯυϥΛݺͼग़͢• ϋϯυϥ• ϦΫΤετʹԠͨ͡ॲཧΛฦ͢
net/httpʹ͍͓͖͍ͭͯͬͯͨ͜ͱᶄ• ϚϧνϓϨΫα• Ͳ͜ͰɺͲͷΑ͏ʹϋϯυϥΛొ͍ͯ͠Δͷ͔• Ͳ͜ͰɺͲͷΑ͏ʹURLͱύλʔϯͷϚονϯάΛߦ͍ͬͯΔ͔• ϋϯυϥ• ͲͷΑ͏ʹϋϯυϥΛ࣮͢Δͷ͔• HandleɺHandlerɺHandleFuncɺHandlerFuncΛΔ• ຬ͍ͨͨ͠ΠϯλʔϑΣʔεԿ͔
• ͜ͷܗͷHTTPαʔόʔͷίʔυΛಡΈղ͘ͷ͕͓͢͢ΊίʔυϦʔσΟϯά
• ϝιουϕʔεͷϧʔτఆٛΛαϙʔτ͚ͨͩ͠ͷ؆қతͳϧʔλʔͷ࣮• ґଘඪ४ύοέʔδͷΈ࣮https://github.com/bmf-san/introduction-to-golang-http-router-made-with-net-http/
Githubhttps://github.com/bmf-san/goblin
ؔ࿈ϦϯΫݻఆπΠʔτʹͿΒԼ͛ͯ͋Γ·͢
͋Γ͕ͱ͏Go͍͟·ͨ͠ʂ