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
4.7k
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
21
Godot Engineについて調べてみた
unsoluble_sugar
0
590
ドキュメント翻訳から始めるOSS推し活
unsoluble_sugar
0
1.8k
VC ClientでRVC完全に理解した / rvc-with-vcclient-completely-understood
unsoluble_sugar
0
1.5k
VCCでVRChatにVRMアバターをアップロードする方法完全に理解した
unsoluble_sugar
0
500
技術選定完全に理解した
unsoluble_sugar
0
500
「未経験からエンジニア」でやり抜いた時の昔話
unsoluble_sugar
0
2.4k
Coursera完全に理解した
unsoluble_sugar
0
4k
歴史的経緯から学ぶVTuber超入門
unsoluble_sugar
0
1k
Other Decks in Technology
See All in Technology
JAWS FESTA 2024「バスロケ」GPS×サーバーレスの開発と運用の舞台裏/jawsfesta2024-bus-gps-serverless
ma2shita
3
190
日経のデータベース事業とElasticsearch
hinatades
PRO
0
230
Охота на косуль у древних
ashapiro
0
100
依存パッケージの更新はコツコツが勝つコツ! / phpcon_nagoya2025
blue_goheimochi
3
220
クラウド食堂とは?
hiyanger
0
110
役員・マネージャー・著者・エンジニアそれぞれの立場から見たAWS認定資格
nrinetcom
PRO
3
6k
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.2k
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
370
OCI Success Journey OCIの何が評価されてる?疑問に答える事例セミナー(2025年2月実施)
oracle4engineer
PRO
2
150
JavaにおけるNull非許容性
skrb
2
2.6k
OPENLOGI Company Profile
hr01
0
60k
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
160
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Bash Introduction
62gerente
611
210k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
570
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Being A Developer After 40
akosma
89
590k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
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 εςʔλείʔυ શʹཧղͨ͠ʁ