Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PUTとPOSTどっち使う?

 PUTとPOSTどっち使う?

65389cd2b6fdc531dcc4af999e864593?s=128

Hank Ehly

June 23, 2022
Tweet

More Decks by Hank Ehly

Other Decks in Technology

Transcript

  1. PUTとPOSTどっち使う? qiita.com/hankehly > PUTとPOSTどっち使う?

  2. 自己紹介 • Hank Ehly (ハンク イーリー) • ENECHANGE株式会社 • qiita.com/hankehly

    • connpass.com/user/hankehly • github.com/hankehly • speakerdeck.com/hankehly qiita.com/hankehly > PUTとPOSTどっち使う?
  3. アジェンダ 1. PUTとPOSTの違い 2. POST 3. PUT qiita.com/hankehly > PUTとPOSTどっち使う?

    百億%忘れてい るぜ
  4. 1 0 意識している あまり意識しない チャットに投稿してください Web APIを開発する上で PUTとPOSTの違いを…

  5. PUTとPOSTの違い qiita.com/hankehly > PUTとPOSTどっち使う?

  6. • リクエストに同封されているデータの意図 The fundamental difference between the POST and PUT

    methods is highlighted by the different intent for the enclosed representation (RFC7231) • 使い分けることで、表現力の高い、理解しやすい Web API が作れる PUTとPOSTの違い qiita.com/hankehly > PUTとPOSTどっち使う?
  7. PUTとPOSTの違い リソース 新規作成 バッチ処理開始 データ削除 POST PUT リソース 置き換え ファイル

    アップロード qiita.com/hankehly > PUTとPOSTどっち使う?
  8. POST

  9. POST • 受け取ったデータで何してもおかしくない • 汎用的 リクエスト レスポンス DBレコードを INSERT する

    201 (Created) ファイルを削除する 204 (No Content) 非同期処理を開始する 202 (Accepted) キャッシュされたリソースにリダイレクトする 303 (See Other) qiita.com/hankehly > PUTとPOSTどっち使う? • 一般的に冪等性がないため、キャッシュの対象にならない
  10. POST /articles HTTP/1.1 { "name": "foo", "author": "tanaka", "content": "hello

    world" } HTTP/1.1 201 Created Location: http://example.com/articles/12 POST • リソースの新規作成に使うことが多い qiita.com/hankehly > PUTとPOSTどっち使う?
  11. POST • リソースの新規作成に使うことが多い POST /articles HTTP/1.1 { "name": "foo", "author":

    "tanaka", "content": "hello world" } HTTP/1.1 201 Created Location: http://example.com/articles/12 qiita.com/hankehly > PUTとPOSTどっち使う?
  12. POST • リソースの新規作成に使うことが多い POST /articles HTTP/1.1 { "name": "foo", "author":

    "tanaka", "content": "hello world" } HTTP/1.1 201 Created Location: http://example.com/articles/12 qiita.com/hankehly > PUTとPOSTどっち使う?
  13. PUT

  14. PUT • 対象リソースの置き換え(丸ごと) • どのリソースを置き換えるか知っている必要がある ◦ PUT /articles/12 • 冪等性

    qiita.com/hankehly > PUTとPOSTどっち使う?
  15. PUT INSERT INTO articles (id, name, author) VALUES (12, "foo",

    "tanaka") ON CONFLICT (id) DO UPDATE SET name = "foo", author = "tanaka" PUTリクエストをSQLに例えたら qiita.com/hankehly > PUTとPOSTどっち使う?
  16. PUT INSERT INTO articles (id, name, author) VALUES (12, "foo",

    "tanaka") ON CONFLICT (id) DO UPDATE SET name = "foo", author = "tanaka" PUT /articles/12 HTTP/1.1 { "name": "foo", "author": "tanaka" } PUTリクエストをSQLに例えたら qiita.com/hankehly > PUTとPOSTどっち使う?
  17. • PUTとPOSTの違いはリクエストデータ意図です • POSTは、1つの決まった使い方がなく、汎用的に活用できる ◦ 何かを「新規作成」するためによく使われる • PUTは、リソースの状態を丸ごと置き換える • 違いを意識することで、より表現力の高い

    API 開発ができる まとめ qiita.com/hankehly > PUTとPOSTどっち使う? POST /articles/12 意図が曖昧(何するの?) PUT /articles/12 意図が明確になる
  18. ご清聴ありがとうございます qiita.com/hankehly > PUTとPOSTどっち使う?