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
3.9k
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
VC ClientでRVC完全に理解した / rvc-with-vcclient-completely-understood
unsoluble_sugar
0
670
VCCでVRChatにVRMアバターをアップロードする方法完全に理解した
unsoluble_sugar
0
210
技術選定完全に理解した
unsoluble_sugar
0
370
「未経験からエンジニア」でやり抜いた時の昔話
unsoluble_sugar
0
1.9k
Coursera完全に理解した
unsoluble_sugar
0
3.4k
歴史的経緯から学ぶVTuber超入門
unsoluble_sugar
0
740
Raspberry Pi完全に理解した
unsoluble_sugar
0
3.4k
リモート勉強会完全に理解した
unsoluble_sugar
0
5.6k
VMagicMirror完全に理解した
unsoluble_sugar
0
4k
Other Decks in Technology
See All in Technology
継続的な改善 x ⾮連続的な進化
sansantech
PRO
3
150
Databricks における 『MLOps』
databricksjapan
2
170
アクセス制御にまつわる改善 / Improving access control
itkq
0
530
APIファーストなプロダクトマネジメントの実践 〜SaaSus Platformでの例〜 / "Practicing API-First Product Management - An Example with SaaSus Platform
oztick139
0
100
On Your Data を超えていく!
hirotomotaguchi
2
670
Java EE/Jakarta EEの現状と将来―クラウドネイティブ時代にJava EEは対応できるのか?―
takakiyo
1
150
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
0
140
Postman v10リリース後を振り返る / Looking back at Postman v10 after release
yokawasa
1
160
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
1.3k
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
350
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
560
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
0
230
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
17
6.4k
How STYLIGHT went responsive
nonsquared
92
4.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
274
13k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Agile that works and the tools we love
rasmusluckow
325
20k
Imperfection Machines: The Place of Print at Facebook
scottboms
260
12k
Building Applications with DynamoDB
mza
88
5.6k
Into the Great Unknown - MozCon
thekraken
10
990
A Philosophy of Restraint
colly
197
16k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
Designing Experiences People Love
moore
136
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 εςʔλείʔυ શʹཧղͨ͠ʁ