Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HTTPステータスコード 完全に理解した
Search
unsoluble_sugar
February 27, 2020
Technology
0
5k
HTTPステータスコード 完全に理解した
『完全に理解した人達の「Web技術」Talk #2 』の発表スライドです
https://easy2.connpass.com/event/167520/
unsoluble_sugar
February 27, 2020
Tweet
Share
More Decks by unsoluble_sugar
See All by unsoluble_sugar
ゆるいエンジニアリングコミュニティはいいぞ
unsoluble_sugar
0
72
Godot Engineについて調べてみた
unsoluble_sugar
0
750
ドキュメント翻訳から始めるOSS推し活
unsoluble_sugar
0
2.3k
VC ClientでRVC完全に理解した / rvc-with-vcclient-completely-understood
unsoluble_sugar
0
1.9k
VCCでVRChatにVRMアバターをアップロードする方法完全に理解した
unsoluble_sugar
0
550
技術選定完全に理解した
unsoluble_sugar
0
550
「未経験からエンジニア」でやり抜いた時の昔話
unsoluble_sugar
0
2.6k
Coursera完全に理解した
unsoluble_sugar
0
4.3k
歴史的経緯から学ぶVTuber超入門
unsoluble_sugar
0
1.2k
Other Decks in Technology
See All in Technology
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
0
250
【Grafana Meetup Japan #6】Grafanaをリバプロ配下で動かすときにやること ~ Grafana Liveってなんだ ~
yoshitake945
0
220
AWS環境のリソース調査を Claude Code で効率化 / aws investigate with cc devio2025
masahirokawahara
2
1k
Oracle Cloud Infrastructure:2025年8月度サービス・アップデート
oracle4engineer
PRO
0
170
絶対に失敗できないキャンペーンページの高速かつ安全な開発、WINTICKET × microCMS の開発事例
microcms
0
360
クラウドセキュリティを支える技術と運用の最前線 / Cutting-edge Technologies and Operations Supporting Cloud Security
yuj1osm
2
250
スプリントレトロスペクティブはチーム観察の宝庫? 〜チームの衝突レベルに合わせたアプローチ仮説!〜
electricsatie
1
150
ガチな登山用デバイスからこんにちは
halka
1
200
AI時代にPdMとPMMはどう連携すべきか / PdM–PMM-collaboration-in-AI-era
rakus_dev
0
250
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
440
退屈なことはDevinにやらせよう〜〜Devin APIを使ったVisual Regression Testの自動追加〜
kawamataryo
4
1.1k
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
250
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
96
6.2k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Being A Developer After 40
akosma
90
590k
GraphQLとの向き合い方2022年版
quramy
49
14k
The Invisible Side of Design
smashingmag
301
51k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Documentation Writing (for coders)
carmenintech
73
5k
Rails Girls Zürich Keynote
gr2m
95
14k
We Have a Design System, Now What?
morganepeng
53
7.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
How GitHub (no longer) Works
holman
315
140k
A Tale of Four Properties
chriscoyier
160
23k
Transcript
HTTPεςʔλείʔυ શʹཧղͨ͠
@unsoluble_sugar TOPGATE, Inc. Leader/Engineer
https://unsolublesugar.com
https://qiita.com/unsoluble_sugar
HTTP εςʔλείʔυ શʹཧղͯ͠·͔͢ʁ
ฉ͍ͨ͜ͱ͋Δ શʹཧղͨ͠ ԿΘ͔Βͳ͍ νϣοτσΩϧ
HTTPεςʔλείʔυͱ • ݫີʹHTTPϨεϙϯεͷεςʔλείʔυ • αʔό͔ΒͷϨεϙϯεͷҙຯΛද͢3ܻͷࣈίʔυͷ͜ͱ • ಛఆͷHTTPϦΫΤετ͕ਖ਼ৗʹ͔ྃͨ͠Λࣔ͢
HTTPϨεϙϯε Ϩεϙϯεϝοηʔδେ͖̏͘छྨͷใʹ͚ΒΕΔ εςʔλεϥΠϯ ʢϓϩτίϧ εςʔλείʔυ ςΩετϑϨʔζʣ )551Ϩεϙϯεϔομ )551ϨεϙϯεϘσΟ
εςʔλείʔυϔομ1ߦ HTTP/1.1 200 OK Date: Sat, 22 Feb 2020 08:09:30
GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Server: nginx ETag: "e287c729017cc9785487098b6b103af6" Cache-Control: max-age=0, private, must-revalidate X-UA-Compatible: IE=Edge,chrome=1 X-Runtime: 0.003487
εςʔλείʔυ5ͭͷΫϥεʹྨ 100൪ɿใϨεϙϯε 200൪ɿޭϨεϙϯε 300൪ɿϦμΠϨΫτ 400൪ɿΫϥΠΞϯτΤϥʔ 500൪ɿαʔόΤϥʔ
100൪ ใϨεϙϯε
100൪ • ॲཧ͕ܧଓ͍ͯ͠Δ͜ͱΛࣔ͢ • ΫϥΠΞϯτͦͷ··ϦΫΤετΛܧଓ͢Δ͔ɺαʔόʔͷ ࢦࣔʹैͬͯϓϩτίϧΛΞοϓσʔτͯ͠࠶ૹ৴͢Δ • HTTP/1.0نʹ1xx൪߸ͷఆ͕ٛͳ͍ͨΊɺ100൪͋·Γ ར༻͞Εͳ͍
100൪ • 100 Continue αʔό͕ϦΫΤετͷड৴Λ͠ڋ൱͍ͯ͠ͳ͍ɻΫϥΠΞϯτ ϦΫΤετΛܧଓͰ͖Δ • 101 Switching Protocols
αʔόϓϩτίϧͷΓସ͑Λཁٻ͍ͯ͠Δ
200൪ ޭϨεϙϯε
200 OK • ޭ࣌ʹฦ͢εςʔλείʔυͱͯ͠࠷ଟ༻͞ΕΔ • ϦΫΤετͨ͠ॲཧ͕ޭɺࢦఆͨ͠σʔλͷऔಘʹޭ • GETɿϘσΟʹϦιʔεؚ͕·ΕΔ • PUT,
POSTɿϘσΟʹॲཧ݁Ռؚ͕·ΕΔ
201 Created • POST, PUTɿϦΫΤετ͕ޭ͠Ϧιʔε͕࡞͞Εͨ • POSTͷ߹ϨεϙϯεͷLocationϔομʹURI͕ೖΔ • Ϣʔβʔ৽نొɺը૾ΞοϓϩʔυɺDBͷςʔϒϧՃͳͲ •
ϘσΟʹ৽͘͠࡞ͨ͠ϦιʔεΛೖΕΔ͜ͱ͕ଟ͍͕ɺಛ ʹԿೖΕͳͯ͘ྑ͍
202 Accepted • ϦΫΤετडཧ͞Ε͕ͨɺ·ͩॲཧ͕͍ྃͯ͠ͳ͍ • ϑΝΠϧܗࣜͷมϓογϡ௨ͷϦΫΤετɺόονॲཧ ͳͲɺαʔόଆͰඇಉظʹߦ͏ॲཧ͕͋Δ߹ʹฦ͢
204 No Content • ϨεϙϯεϘσΟ͕ۭͷͱ͖ʹฦ͢ • DELETEͰσʔλআΛߦͬͨࡍʹฦ͢ • POSTͰϑΥʔϜ༰Λૹ৴͕ͨ͠ը໘ߋ৽͕ͳ͍߹ •
PUTPATCHͰਖ਼͘͠σʔλߋ৽͞Εͨ߹ • DELETEҎ֎Ͱ͋·Γ͏͖Ͱͳ͍ͱ͍͏ҙݟ͋Δ
205 Reset Content • ϢʔβʔΤʔδΣϯτͷը໘ΛϦηοτ͢Δ߹ʹฦ͞ΕΔ • 204ͱಉ͘͡ϨεϙϯεϘσΟͳ͠
300൪ ϦμΠϨτ
300 Multiple Choices • ϦΫΤετʹରͯ͠ෳͷϨεϙϯε͕͋Δ͜ͱΛࣔ͢ • બࢶϦϯΫ͢ΔHTML͕ఏࣔ͞ΕɺϢʔβʔΤʔδΣϯτ ϢʔβʔͦΕΒ͔ΒͻͱͭΛબ͢Δ
301 Moved Permanently • ϦΫΤετ͞ΕͨϦιʔεͷURL͕߃ٱతʹมߋ͞Εͨ • WebαΠτͷҠసɺHTTP͔ΒHTTPSͷϦμΠϨΫτͳͲ • LocationϔομʹҠಈઌͷURL͕ࣔ͞ΕΔ
302 Found • ϦΫΤετ͞ΕͨϦιʔεͷURL͕Ұ࣌తʹมߋ͞Εͨ • LocationϔομʹҠಈઌͷURL͕ࣔ͞ΕΔ • ࣮ࡍ303ͷ༻్ͰΘΕΔ͜ͱ͕ଟ͘ɺ307ͱͯ͠࠶ఆٛ͞ ΕͨͨΊݱࡏਪ͞Ε͍ͯͳ͍
303 See Other • ϦΫΤετ͞ΕͨϦιʔεΛผͷURIͰऔಘͰ͖Δ͜ͱΛࣔ͢ • LocationϔομʹҠಈઌͷURL͕ࣔ͞ΕΔ • ϒϥβͷϑΥʔϜ͔ΒPOSTͰॲཧΛߦͬͨϨεϙϯεͱ͠ ͯɺ݁Ռը໘ʹϦμΠϨΫτ͢Δͱ͖ʹ͏
307 Temporary Redirect • Ұ࣌తϦμΠϨΫτ • 302ͷن֨֎ͳ༻๏͕ԣߦͨͨ͠Ί࠶ఆٛͨ͠ͷ • LocationϔομʹҠಈઌͷURL͕ࣔ͞ΕΔ •
ϢʔβʔΤʔδΣϯτ༻͢ΔHTTPϝιουΛมߋͯ͠ͳ Βͳ͍
308 Permanent Redirect • ߃ٱతϦμΠϨΫτ • 301ͷن֨֎ͳ༻๏͕ԣߦͨͨ͠Ί࠶ఆٛͨ͠ͷ • LocationϔομʹҠಈઌͷURL͕ࣔ͞ΕΔ •
ϢʔβʔΤʔδΣϯτ༻͢ΔHTTPϝιουΛมߋͯ͠ͳ Βͳ͍
400൪ ΫϥΠΞϯτΤϥʔ
400 Bad Request • ϦΫΤετ͕ෆਖ਼ • ఆٛ͞Ε͍ͯͳ͍ϝιουΛͬͨΓɺύϥϝʔλʹؒҧ͍͕ ͋ΔͳͲɺΫϥΠΞϯτͷϦΫΤετ͕͓͔͍͠߹ • ΄͔ʹదͳΫϥΠΞϯτΤϥʔΛࣔ͢εςʔλείʔυ͕ͳ
͍߹ʹ༻͍Δ
401 Unauthorized • ೝূΤϥʔ • ϩάΠϯ͕ඞཁͳϖʔδͰIDύεϫʔυΛؒҧ͑ͨ߹ • ϦΫΤετʹඞཁͳAuthorizationϔομΛؚ·ͳ͍߹ • τʔΫϯ͕ࣦޮɺഁଛ͍ͯ͠ΔͳͲෆਖ਼ͳ߹
403 Forbidden • ೝՄΤϥʔ • ڐՄ͞Ε͍ͯͳ͍ͳͲͷཧ༝ͰΫϥΠΞϯτͷΞΫηεݖݶ͕ ͳ͘ɺαʔό͔ΒͷϨεϙϯε͕ڋ൱͞Εͨ • ಛఆͷIPΞυϨεͷΈ͔ΒΞΫηεͰ͖Δ߹ͳͲʹ༻͍Δ •
401ͱҟͳΓɺΫϥΠΞϯτͷࣝผ͞Ε͍ͯΔ
404 Not Found • ϦΫΤετ͞ΕͨϦιʔε͕ଘࡏ͠ͳ͍ • WebͰසൟʹݟΒΕΔ༗໊ͳΤϥʔεςʔλείʔυͷͻͱͭ • ͦͦURIࣗମ͕ଘࡏ͠ͳ͍ͷ͔ɺऔಘରͷϦιʔε͕ଘࡏ͠ͳ͔ͬ ͨͷ͔ͳͲɺৄࡉใΛࣔ͢ඞཁ͕͋Δ
• ڐՄ͞Ε͍ͯͳ͍ΫϥΠΞϯτ͔ΒϦιʔεͷଘࡏΛӅͨ͢Ίɺ 403ͷ ΘΓʹ404Λฦ͢͜ͱ͋Δ
405 Method Not Allowed • ΤϯυϙΠϯτଘࡏ͢Δ͕ڐՄ͞Ε͍ͯͳ͍HTTPϝιου • GETͰΞΫηεՄೳͳݕࡧAPIΛPOSTͰ༻͠Α͏ͱͨ͠߹ • API͕ϦιʔεͷDELETEΛېࢭ͍ͯ͠Δ߹
408 Request Timeout • ࢦఆ࣌ؒʹϦΫΤετ͕ྃ͠ͳ͔ͬͨ • ChromeɺFirefoxͳͲɺӾཡΛߴԽ͢ΔͨΊͷHTTPࣄલଓ ػೳΛ༻͢ΔϒϥβͰΑ͘༻͞ΕΔ • ճઢͷଓ͕Լ͍ͯ͠Δ߹ͳͲʹൃੜ
409 Conflict • Ϧιʔεͷڝ߹͕ൃੜͨ͠߹ • ͢Ͱʹଘࡏ͢ΔϝʔϧΞυϨεಉҰIDͷϢʔβʔొΛߦ͓ ͏ͱͨ࣌͠ • ۭͰͳ͍σΟϨΫτϦΛআ͠Α͏ͱͨ͠ΓɺϦιʔεͷ໊ લΛ͢ͰʹଞͰΘΕ͍ͯΔͷʹมߋ͠Α͏ͱͨ࣌͠ͳͲ
410 Gone • ϦΫΤετ͞Εͨίϯςϯπ͕αʔό͔ΒӬٱʹআ͞ΕɺసૹઌΞυϨε ͕ͳ͍߹ • 404ͱҧ͍ʮ͔ͭͯଘࡏ͍͕ͯͨ͠ࠓ͏ଘࡏ͍ͯ͠ͳ͍ʯ͜ͱΛද͢ • ظؒݶఆͷϓϩϞʔγϣϯαΠτͳͲͰར༻͢Δ͜ͱΛҙਤ͍ͯ͠Δ •
ϢʔβʔใΛѻ͏APIͰ410Λฦ༷͢ɺݸਓใอޢͷ؍͔Βࢹ ͞ΕΔՄೳੑ͋Δʢআͨ͠ͱ͍͏ใΛอ͍࣋ͯ͠Δ㲈શʹআ͞Εͯ ͍ͳ͍ʣ
413 Payload Too Large • ϦΫΤετϔομɺϘσΟ͕αʔόͰఆΊ͍ͯΔ্ݶΛ͑ͯ ͍Δ͜ͱΛࣔ͢ • ڐ༰αΠζҎ্ͷϑΝΠϧΞοϓϩʔυ͕ߦΘΕͨ࣌ͳͲ •
αʔόίωΫγϣϯΛด͡Δ͔ɺRetry-After ϔομΛฦ͢
414 URI Too Long • ΫϥΠΞϯτ͕ϦΫΤετͨ͠URI͕ɺαʔόͰѻ͑Δ͞Λ ͍͑ͯΔ • ΫΤϦύϥϝʔλʹա͗Δσʔλ͕ࢦఆ͞Εͨ࣌ͳͲ
415 Unsupported Media Type • ϦΫΤετ͞ΕͨσʔλͷϝσΟΞܗࣜʢContent-Typeʣʹ αʔόʔ͕ରԠ͓ͯ͠Βͣɺαʔό͕ϦΫΤετΛڋ൱ͨ͠ • JSONϦΫΤετ͔͠ड͚औΕͳ͍APIʹXML͕ૹΒΕͨɺα ϙʔτ͢Δը૾ܗࣜҎ֎ͷը૾ΛΞοϓϩʔυ͠Α͏ͱͨ࣌͠
ͳͲ
429 Too Many Requests • ΞΫηεճ͕ڐ༰ൣғͷݶքΛ͑ͨ߹ʹฦ͢ • 2012ʹRFC6585Ͱఆٛ͞Εͨ৽͍͠εςʔλείʔυ • Ұఆͷ࣌ؒʹϨʔτϦϛοτΛ͑ΔେྔͷϦΫΤετΛૹ
৴ͨ͠ʢྫɿ1ؒʹ60ճͳͲͷAPIϦΫΤετ੍ݶʣ
500൪ αʔόΤϥʔ
500 Internal Server Error • αʔόଆʹԿΒ͔ͷҟৗ͕ൃੜ͠ਖ਼ৗͳϨεϙϯε͕ฦͤͳ͍ • ʮԿΒ͔ͷҟৗ͕ൃੜ͠·ͨ͠ʯతͳΤϥʔϝοηʔδ͕ฦΔ ͜ͱ͕ଟ͘ɺΫϥΠΞϯτଆͰղܾෆೳ •
΄͔ʹదͳΤϥʔίʔυ͕ͳ͍߹ʹ༻͍Δ • αʔόʔͷΤϥʔϩάΛݟΕݪҼ͕Θ͔Δ͔
502 Bad Gateway • ήʔτΣΠ·ͨϓϩΩγʹ͕ൃੜ͍ͯ͠Δ • ήʔτΣΠͱͯ͠ಈ࡞͢Δαʔό͕ແޮͳϨεϙϯεΛड͚ औͬͨ
503 Service Unavailable • αʔό͕ϦΫΤετΛॲཧ͢Δ४උ͕Ͱ͖͍ͯͳ͍ঢ়ଶ • Ұ࣌తͳΞΫηεूதϝϯςφϯεʹΑΓαʔό͕μϯ͠ ͍ͯΔ • ϝϯςφϯεͷ߹ɺRetry-Afterϔομʹ࠶։༧ఆ࣌ظʢ͓
ΑͦԿඵޙ͔ʣΛؚΊΔ͜ͱͰ͖Δ
504 Gateway Timeout • ήʔτΣΠͱͯ͠ಈ࡞͢Δαʔό͕ࢦఆ࣌ؒʹϨεϙϯε ΛಘΒΕͳ͔ͬͨ • αΠτҠߦͳͲʹΑΔҰ࣌తͳDNSҟৗͷ߹
505 HTTP Version Not Supported • ϦΫΤετͨ͠HTTPϓϩτίϧͷόʔδϣϯʹαʔό͕ରԠ͠ ͍ͯͳ͍
None
·ͱΊ εςʔλείʔυΛҙࣝͨ͠ઃܭΛߦ͏͜ͱͰ αʔόͱΫϥΠΞϯτؒͷ։ൃ͕εϜʔζʹਐΉ ෆదͳεςʔλείʔυΛׂΓͯͯ͠·͏ͱ ΫϥΠΞϯτଆ͕ࠞཚ͠ɺγεςϜશମͷڍಈʹࢧোΛ͖ͨ͢͜ͱ… εςʔλείʔυΛཧղ͢Δ͜ͱͰ ͷΓ͚அ͕͘͢͠ͳΔ
ࢀߟॻ੶ WebΛࢧ͑Δٕज़ ᴷ HTTPɺURIɺHTMLɺͦͯ͠REST ࢁຊཅฏɹஶʢWEB+DB PRESS plusʣ 20104݄ ൃߦ Web
API: The Good Parts ਫ و໌ɹஶʢΦϥΠϦʔδϟύϯʣ 201411݄ ൃߦ
ࢀߟURL • HTTP Ϩεϙϯεεςʔλείʔυ - HTTP | MDN https://developer.mozilla.org/ja/docs/Web/HTTP/Status •
IETF Documents https://tools.ietf.org/html/ • HTTPεςʔλείʔυ - Wikipedia https://ja.wikipedia.org/wiki/HTTPεςʔλείʔυ
HTTP εςʔλείʔυ શʹཧղͨ͠ʁ