76
告白に学ぶ HTTP Status Code - エラー編 - 2017/10/05 PHPカンファレンス2017 @takapyyy

20171005 告白に学ぶ http status code

Embed Size (px)

Citation preview

Page 1: 20171005 告白に学ぶ http status code

告白に学ぶHTTP Status Code

- エラー編 -

2017/10/05

PHPカンファレンス2017

@takapyyy

Page 2: 20171005 告白に学ぶ http status code

※多分最後までいかないので

Page 3: 20171005 告白に学ぶ http status code
Page 4: 20171005 告白に学ぶ http status code

人材募集してます!

デザイナ/エンジニア@東京 @名古屋 @大阪

Page 5: 20171005 告白に学ぶ http status code

※多分最後までいかないので

Page 6: 20171005 告白に学ぶ http status code

● REST APIで真価を発揮!適切に使い分けよう!

● 扱う側の扱いやすさを考えよう!

● 伝えきれないことはメッセージに含めよう!

まとめ

Page 7: 20171005 告白に学ぶ http status code

HTTP Status Code

HTTPにおいてWebサーバからのレスポンスの意味

を表現する3桁の数字からなるコードで、RFC 2616、

RFC 7231等によって定められている。

参考:https://ja.wikipedia.org/wiki/HTTPステータス

コード

Page 8: 20171005 告白に学ぶ http status code

HTTP Status Code

HTTPにおいてWebサーバからのレスポンスの意味

を表現する3桁の数字からなるコードで、RFC 2616、

RFC 7231等によって定められている。

参考:https://ja.wikipedia.org/wiki/HTTPステータス

コード

Page 9: 20171005 告白に学ぶ http status code

Laravelでいうところのこれ

Route::get('home', function () {

return response('Hello World', 200)

->header('Content-Type', 'text/plain');

});

Page 10: 20171005 告白に学ぶ http status code

Laravelでいうところのこれ

Route::get('home', function () {

return response('Hello World', 200)

->header('Content-Type', 'text/plain');

});

Page 11: 20171005 告白に学ぶ http status code

ざっくり

1xx Informationリクエストは受け取られた。処理は継続される。

2xx Successリクエストは受け取られ、理解され、受理された。

3xx Redirectionリクエストを完了させるために、追加的な処理が必要。

4xx Client Errorクライアントからのリクエストに誤りがあった。

5xx Server Errorサーバがリクエストの処理に失敗した。

Page 12: 20171005 告白に学ぶ http status code

ざっくり

1xx Informationリクエストは受け取られた。処理は継続される。

2xx Successリクエストは受け取られ、理解され、受理された。

3xx Redirectionリクエストを完了させるために、追加的な処理が必要。

4xx Client Errorクライアントからのリクエストに誤りがあった。

5xx Server Errorサーバがリクエストの処理に失敗した。

Page 13: 20171005 告白に学ぶ http status code

こんないっぱい覚えられないよ...

そんなあなたに!

Page 14: 20171005 告白に学ぶ http status code
Page 15: 20171005 告白に学ぶ http status code

はい!お願いします///あっ、あの!

付き合って下さい!

Page 16: 20171005 告白に学ぶ http status code

サーバークライアント

Page 17: 20171005 告白に学ぶ http status code

はい!お願いします///

OKです!あっ、あの!

付き合って下さい!

OKの例

Page 18: 20171005 告白に学ぶ http status code

OKです!

Response

はい!お願いします///

Request

あっ、あの!

付き合って下さい!

OKの例

Page 19: 20171005 告白に学ぶ http status code

※多分最後までいかないので

Page 20: 20171005 告白に学ぶ http status code

おもんないやつはとばします

Page 21: 20171005 告白に学ぶ http status code

1xx

Information

Page 22: 20171005 告白に学ぶ http status code

継続。

クライアントはリクエストを継続できる。サーバが

リクエストの最初の部分を受け取り、まだ拒否して

いないことを示す。

100 Continue

Page 23: 20171005 告白に学ぶ http status code

話があるんだけ

ど!

100 Continue

ほほう、それでそ

れで?

Page 24: 20171005 告白に学ぶ http status code

2xx

Success

Page 25: 20171005 告白に学ぶ http status code

200 OK

OK。

リクエストは成功し、レスポンスとともに要求に応

じた情報が返される。

Page 26: 20171005 告白に学ぶ http status code

はい!

お願いします///

付き合って下さ

い!

200 OK

Page 27: 20171005 告白に学ぶ http status code
Page 28: 20171005 告白に学ぶ http status code

3xx

Redirection

Page 29: 20171005 告白に学ぶ http status code

300 Multiple Choices

複数の選択。

リクエストしたリソースが複数存在し、ユーザやユ

ーザーエージェントに選択肢を提示するときに返さ

れる。

Page 30: 20171005 告白に学ぶ http status code

佐藤さん2人いる

んだよね

どっち?

佐藤さん付き合っ

て下さい!

300 Multiple Choices

Page 31: 20171005 告白に学ぶ http status code

こっから本編!

Page 32: 20171005 告白に学ぶ http status code

4xx

Client Error

Page 33: 20171005 告白に学ぶ http status code

こっちが悪い

Page 34: 20171005 告白に学ぶ http status code

400 Bad Request

リクエストが不正である。

定義されていないメソッドを使うなど、クライアン

トのリクエストがおかしい場合に返される。

Page 35: 20171005 告白に学ぶ http status code

ごめんなさい

ちゃんと目をみて

告白してくれなき

ゃイヤ!

付き合って下さ

い!

400 Bad Request

Page 36: 20171005 告白に学ぶ http status code

401 Unauthorized

認証が必要である。

Basic認証やDigest認証などを行うときに使用される。

Page 37: 20171005 告白に学ぶ http status code

おまえに娘はやら

ん!

娘さんを下さい!

401 Unauthorized

Page 38: 20171005 告白に学ぶ http status code

402 Payment Required

支払いが必要である。

現在は実装されておらず、将来のために予約されて

いるとされる。

Page 39: 20171005 告白に学ぶ http status code

この壷買ってくれ

る?♡

付き合って下さ

い!

402 Payment Required

Page 40: 20171005 告白に学ぶ http status code

403 Forbidden

禁止されている。

リソースにアクセスすることを拒否された。リクエ

ストはしたが処理できないという意味。アクセス権

がない場合や、ホストがアクセス禁止処分を受けた

場合などに返される。

Page 41: 20171005 告白に学ぶ http status code

娘とは接近禁止じゃ!

二度とくんじゃねえ!

娘さんに会わせて

下さい!

403 Forbidden

Page 42: 20171005 告白に学ぶ http status code

404 Not Found

未検出。

リソースが見つからなかった。

単に、アクセス権がない場合などにも使用される。

Page 43: 20171005 告白に学ぶ http status code

...おかけになった電話番号は

現在使われておりません...

もしもし、俺やけ

最近げんき?

404 Not Found

Page 44: 20171005 告白に学ぶ http status code

405 Method Not Allowed

許可されていないメソッド。

許可されていないメソッドを使用しようとした。

例えば、POSTメソッドの使用が許されていない場

所で、POSTメソッドを使用した場合に返される。

Page 45: 20171005 告白に学ぶ http status code

(そういうのは直

接会っていってほ

しいな)、っと

(ポチポチ

(付き合って下さ

い!)、っと(ポ

チポチ

405 Method Not Allowed

Page 46: 20171005 告白に学ぶ http status code

406 Not Acceptable

受理できない。

Accept関連のヘッダに受理できない内容が含まれて

いる場合に返される。

Page 47: 20171005 告白に学ぶ http status code

私はあなたに似合

う人じゃないわ。。

付き合って下さ

い!

406 Not Acceptable

Page 48: 20171005 告白に学ぶ http status code

407 Proxy Authentication Required

プロキシ認証が必要である。

プロキシの認証が必要な場合に返される。

Page 49: 20171005 告白に学ぶ http status code

ごめんなさい

先にけいこちゃん

に聞いてからにし

て><

付き合って下さ

い!

407 Proxy Authentication Required

Page 50: 20171005 告白に学ぶ http status code

408 Request Timeout

リクエストタイムアウト。

リクエストが時間以内に完了していない場合に返さ

れる。

Page 51: 20171005 告白に学ぶ http status code

はよいえ

....付き合

408 Request Timeout

Page 52: 20171005 告白に学ぶ http status code

409 Conflict

競合。

要求は現在のリソースと競合するので完了できない。

Page 53: 20171005 告白に学ぶ http status code

ごめんね。

私、カレシいるん

だ...

付き合って下さ

い!

409 Conflict

Page 54: 20171005 告白に学ぶ http status code

消滅した。

リソースは恒久的に移動・消滅した。どこに行った

かもわからない。

404 Not Foundと似ているが、こちらは二度と復活

しない場合に使われる。

410 Gone

Page 55: 20171005 告白に学ぶ http status code

(あの子はも

う...)

付き合って下さ

い!

410 Gone

Page 56: 20171005 告白に学ぶ http status code

前提条件で失敗した。

前提条件が偽だった場合に返される。

412 Precondition Failed

Page 57: 20171005 告白に学ぶ http status code

私、年上好きって

いったぢゃん。。

おねえさん!

付き合って下さい!

412 Precondition Failed

Page 58: 20171005 告白に学ぶ http status code

ペイロードが大きすぎる。

リクエストエンティティがサーバの許容範囲を超え

ている場合に返す。

例:アップローダの上限を超えたデータを送信しよ

うとした。

413 Payload Too Large

Page 59: 20171005 告白に学ぶ http status code

なげえ

...

413 Payload Too Large

突然呼び出してごめんね。

今日いい天気だよね。あ

っ、こんなことがいいた

いんじゃなくて、ここ数

日けいこのこと考えたら

寝れなく日々が続いちゃ

ってさwこんなん言われ

てもきもいよねwでもそ

れくらい俺がけいこのこ

と考えてるのはわかって

ほしい。かわいいし優し

いしいつも笑顔で俺は癒

やされててずっと一緒に

いたいなって思っちゃっ

て...。毎日気づいたら目

でおっちゃってて自分で

Page 60: 20171005 告白に学ぶ http status code

私はティーポット。

エイプリルフールネタ。

418 I’m a tea pot.

Page 61: 20171005 告白に学ぶ http status code

私はティーポット

なのよ

コーヒーいれても

良い?

418 I’m a teapot

Page 62: 20171005 告白に学ぶ http status code

PSR-8 Mutually Assured Hug

Mutually Assured Hug (相互高信頼性ハグ)

この標準は、オブジェクトが互いの感謝と支持を表

明するための、一般的な方法を確立します。

これでオブジェクトは、建設的な方法で互いをサポ

ートすることができ、異なるPHPプロジェクト間の

協力を促進します。

https://qiita.com/tanakahisateru/items/3f24014a91744c2b04fe

Page 63: 20171005 告白に学ぶ http status code

PSR-8 Mutually Assured Hug

Page 64: 20171005 告白に学ぶ http status code

法的理由により利用不可。

403 Forbiddenから派生したステータスコード。

451 Unavailable For Legal Reasons

Page 65: 20171005 告白に学ぶ http status code

法律はまだそこま

でいってないんで

すよ

Hey!! Siri!!

付き合って下さ

い!

451 Unavailable For Legal Reasons

Page 66: 20171005 告白に学ぶ http status code

5xx

Server Error

Page 67: 20171005 告白に学ぶ http status code

こっちが悪い

Page 68: 20171005 告白に学ぶ http status code

サーバ内部エラー。

サーバ内部にエラーが発生した場合に返される。

例として、CGIとして動作させているプログラムに

文法エラーがあったり、設定に誤りがあった場合な

どに返される。

500 Internal Server Error

Page 69: 20171005 告白に学ぶ http status code

ごめん、ちょっと

今体調悪くて...

付き合って下さ

い!

500 Internal Server Error

Page 70: 20171005 告白に学ぶ http status code

不正なゲートウェイ。

ゲートウェイ・プロキシサーバは不正な要求を受け

取り、これを拒否した。

502 Bad Gateway

Page 71: 20171005 告白に学ぶ http status code

けいこちゃん?

もういないわよ...?

けいこさん!付き

合って下さい!

502 Bad Gateway

Proxyみたいなやつ

Page 72: 20171005 告白に学ぶ http status code

サービス利用不可。

サービスが一時的に過負荷やメンテナンスで使用不

可能である。例として、アクセスが殺到して処理不

能に陥った場合に返される。

503 Service Unavailable

Page 73: 20171005 告白に学ぶ http status code

アッ...アッ...ツキアッテクダサイ!!

ツキアッテクダサイ!!

ツキアッテクダサイ!!

ツキアッテクダサイ!!

503 Service Unavailable

Page 74: 20171005 告白に学ぶ http status code

ゲートウェイタイムアウト。

ゲートウェイ・プロキシサーバはURIから推測され

るサーバからの適切なレスポンスがなくタイムアウ

トした。

504 Gateway Timeout

Page 75: 20171005 告白に学ぶ http status code

けいこちゃんから

返事がないわ。ご

めんなさい

けいこさん!

付き合って下さ

い!

504 Gateway Timeout

< おっおねg...

Proxyみたいなやつ

Page 76: 20171005 告白に学ぶ http status code

懇親会でお会いしましょう!!