Upload
shinichi-takahashi
View
209
Download
0
Embed Size (px)
Citation preview
告白に学ぶHTTP Status Code
- エラー編 -
2017/10/05
PHPカンファレンス2017
@takapyyy
※多分最後までいかないので
人材募集してます!
デザイナ/エンジニア@東京 @名古屋 @大阪
※多分最後までいかないので
● REST APIで真価を発揮!適切に使い分けよう!
● 扱う側の扱いやすさを考えよう!
● 伝えきれないことはメッセージに含めよう!
まとめ
HTTP Status Code
HTTPにおいてWebサーバからのレスポンスの意味
を表現する3桁の数字からなるコードで、RFC 2616、
RFC 7231等によって定められている。
参考:https://ja.wikipedia.org/wiki/HTTPステータス
コード
HTTP Status Code
HTTPにおいてWebサーバからのレスポンスの意味
を表現する3桁の数字からなるコードで、RFC 2616、
RFC 7231等によって定められている。
参考:https://ja.wikipedia.org/wiki/HTTPステータス
コード
Laravelでいうところのこれ
Route::get('home', function () {
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
});
Laravelでいうところのこれ
Route::get('home', function () {
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
});
ざっくり
1xx Informationリクエストは受け取られた。処理は継続される。
2xx Successリクエストは受け取られ、理解され、受理された。
3xx Redirectionリクエストを完了させるために、追加的な処理が必要。
4xx Client Errorクライアントからのリクエストに誤りがあった。
5xx Server Errorサーバがリクエストの処理に失敗した。
ざっくり
1xx Informationリクエストは受け取られた。処理は継続される。
2xx Successリクエストは受け取られ、理解され、受理された。
3xx Redirectionリクエストを完了させるために、追加的な処理が必要。
4xx Client Errorクライアントからのリクエストに誤りがあった。
5xx Server Errorサーバがリクエストの処理に失敗した。
こんないっぱい覚えられないよ...
そんなあなたに!
はい!お願いします///あっ、あの!
付き合って下さい!
サーバークライアント
はい!お願いします///
OKです!あっ、あの!
付き合って下さい!
OKの例
OKです!
Response
はい!お願いします///
Request
あっ、あの!
付き合って下さい!
OKの例
※多分最後までいかないので
おもんないやつはとばします
1xx
Information
継続。
クライアントはリクエストを継続できる。サーバが
リクエストの最初の部分を受け取り、まだ拒否して
いないことを示す。
100 Continue
話があるんだけ
ど!
100 Continue
ほほう、それでそ
れで?
2xx
Success
200 OK
OK。
リクエストは成功し、レスポンスとともに要求に応
じた情報が返される。
はい!
お願いします///
付き合って下さ
い!
200 OK
3xx
Redirection
300 Multiple Choices
複数の選択。
リクエストしたリソースが複数存在し、ユーザやユ
ーザーエージェントに選択肢を提示するときに返さ
れる。
佐藤さん2人いる
んだよね
どっち?
佐藤さん付き合っ
て下さい!
300 Multiple Choices
こっから本編!
4xx
Client Error
こっちが悪い
400 Bad Request
リクエストが不正である。
定義されていないメソッドを使うなど、クライアン
トのリクエストがおかしい場合に返される。
ごめんなさい
ちゃんと目をみて
告白してくれなき
ゃイヤ!
付き合って下さ
い!
400 Bad Request
401 Unauthorized
認証が必要である。
Basic認証やDigest認証などを行うときに使用される。
おまえに娘はやら
ん!
娘さんを下さい!
401 Unauthorized
402 Payment Required
支払いが必要である。
現在は実装されておらず、将来のために予約されて
いるとされる。
この壷買ってくれ
る?♡
付き合って下さ
い!
402 Payment Required
403 Forbidden
禁止されている。
リソースにアクセスすることを拒否された。リクエ
ストはしたが処理できないという意味。アクセス権
がない場合や、ホストがアクセス禁止処分を受けた
場合などに返される。
娘とは接近禁止じゃ!
二度とくんじゃねえ!
娘さんに会わせて
下さい!
403 Forbidden
404 Not Found
未検出。
リソースが見つからなかった。
単に、アクセス権がない場合などにも使用される。
...おかけになった電話番号は
現在使われておりません...
もしもし、俺やけ
ど
最近げんき?
404 Not Found
405 Method Not Allowed
許可されていないメソッド。
許可されていないメソッドを使用しようとした。
例えば、POSTメソッドの使用が許されていない場
所で、POSTメソッドを使用した場合に返される。
(そういうのは直
接会っていってほ
しいな)、っと
(ポチポチ
(付き合って下さ
い!)、っと(ポ
チポチ
405 Method Not Allowed
406 Not Acceptable
受理できない。
Accept関連のヘッダに受理できない内容が含まれて
いる場合に返される。
私はあなたに似合
う人じゃないわ。。
付き合って下さ
い!
406 Not Acceptable
407 Proxy Authentication Required
プロキシ認証が必要である。
プロキシの認証が必要な場合に返される。
ごめんなさい
先にけいこちゃん
に聞いてからにし
て><
付き合って下さ
い!
407 Proxy Authentication Required
❤
❤
友
408 Request Timeout
リクエストタイムアウト。
リクエストが時間以内に完了していない場合に返さ
れる。
はよいえ
....付き合
408 Request Timeout
409 Conflict
競合。
要求は現在のリソースと競合するので完了できない。
ごめんね。
私、カレシいるん
だ...
付き合って下さ
い!
409 Conflict
消滅した。
リソースは恒久的に移動・消滅した。どこに行った
かもわからない。
404 Not Foundと似ているが、こちらは二度と復活
しない場合に使われる。
410 Gone
(あの子はも
う...)
付き合って下さ
い!
410 Gone
前提条件で失敗した。
前提条件が偽だった場合に返される。
412 Precondition Failed
私、年上好きって
いったぢゃん。。
おねえさん!
付き合って下さい!
412 Precondition Failed
ペイロードが大きすぎる。
リクエストエンティティがサーバの許容範囲を超え
ている場合に返す。
例:アップローダの上限を超えたデータを送信しよ
うとした。
413 Payload Too Large
なげえ
...
413 Payload Too Large
突然呼び出してごめんね。
今日いい天気だよね。あ
っ、こんなことがいいた
いんじゃなくて、ここ数
日けいこのこと考えたら
寝れなく日々が続いちゃ
ってさwこんなん言われ
てもきもいよねwでもそ
れくらい俺がけいこのこ
と考えてるのはわかって
ほしい。かわいいし優し
いしいつも笑顔で俺は癒
やされててずっと一緒に
いたいなって思っちゃっ
て...。毎日気づいたら目
でおっちゃってて自分で
私はティーポット。
エイプリルフールネタ。
418 I’m a tea pot.
私はティーポット
なのよ
コーヒーいれても
良い?
418 I’m a teapot
PSR-8 Mutually Assured Hug
Mutually Assured Hug (相互高信頼性ハグ)
この標準は、オブジェクトが互いの感謝と支持を表
明するための、一般的な方法を確立します。
これでオブジェクトは、建設的な方法で互いをサポ
ートすることができ、異なるPHPプロジェクト間の
協力を促進します。
https://qiita.com/tanakahisateru/items/3f24014a91744c2b04fe
PSR-8 Mutually Assured Hug
法的理由により利用不可。
403 Forbiddenから派生したステータスコード。
451 Unavailable For Legal Reasons
法律はまだそこま
でいってないんで
すよ
Hey!! Siri!!
付き合って下さ
い!
451 Unavailable For Legal Reasons
5xx
Server Error
こっちが悪い
サーバ内部エラー。
サーバ内部にエラーが発生した場合に返される。
例として、CGIとして動作させているプログラムに
文法エラーがあったり、設定に誤りがあった場合な
どに返される。
500 Internal Server Error
ごめん、ちょっと
今体調悪くて...
付き合って下さ
い!
500 Internal Server Error
不正なゲートウェイ。
ゲートウェイ・プロキシサーバは不正な要求を受け
取り、これを拒否した。
502 Bad Gateway
けいこちゃん?
もういないわよ...?
けいこさん!付き
合って下さい!
502 Bad Gateway
Proxyみたいなやつ
サービス利用不可。
サービスが一時的に過負荷やメンテナンスで使用不
可能である。例として、アクセスが殺到して処理不
能に陥った場合に返される。
503 Service Unavailable
アッ...アッ...ツキアッテクダサイ!!
ツキアッテクダサイ!!
ツキアッテクダサイ!!
ツキアッテクダサイ!!
503 Service Unavailable
ゲートウェイタイムアウト。
ゲートウェイ・プロキシサーバはURIから推測され
るサーバからの適切なレスポンスがなくタイムアウ
トした。
504 Gateway Timeout
けいこちゃんから
返事がないわ。ご
めんなさい
けいこさん!
付き合って下さ
い!
504 Gateway Timeout
< おっおねg...
Proxyみたいなやつ
懇親会でお会いしましょう!!