「Web API: The Good Parts」読書メモ 1章~2章

Published: 2016年2月14日 by tomsato

◼︎ 概要

自社で取り扱っているAPIを運用したり、Twitterなど提供をされているAPIを使うなど目にする機会は多く
今後設計したりレビューをする可能性は0ではないため今のうちに勉強をしよう思ったのが経緯です

自分的に気になったところをメモ程度にまとめます

◼︎ 本について

水野貴明著「Web API: The Good Parts」(オライリー・ジャパン発行)

Amazon or オライリー・ジャパン公式サイトにて販売中

◼︎ 1章

目次

  1. Web APIとは何か
    1. Web APIの重要性
    2. さまざまなAPIのパターン
    3. 何をAPIで公開すべきか
    4. Web APIを美しく設計する重要性
    5. Web APIを美しくするには
    6. RESTとWeb API
    7. 対象となる開発者の数とAPIの設計思想
    8. まとめ

気になったところ

  • APIエコノミー
    • APIを公開することで外部サービスとの連携を容易にしてサービスが発展することを言う
  • ProgrammableWeb
    • 様々なAPIを集めてその情報を公開しているサービスというものがある
  • REST API
  • デファクトスタンダード
    • 事実上の標準

◼︎ 2章

目次

  1. エンドポイントの設計とリクエストの形式
    1. APIとして公開する機能を設計する
    2. APIエンドポイントの考え方
    3. HTTPメソッドとエンドポイント
    4. APIのエンドポイント設計
    5. 検索とクエリパラメータの設計
    6. ログインとOAuth 2.0
    7. ホスト名とエンドポイントの共通部分
    8. SSKDsとAPIデザイン
    9. HATEOASとREST LEVEL3 API
    10. まとめ

気になったところ

  • 良いURIを設計するために考えること
    • 短くて入力しやすいURI
    • 人間が読んで理解できるURI
    • 大文字小文字が混在しないURI
    • 改造しやすいURI
    • サーバ側のアーキテクチャが反映されていないURI
    • ルールが統一されたURI
  • HTTPメソッド
    • URIがAPIにおいて操作するリソースでHTTPメソッドは何をするかを表す
    • GET:情報の取得
    • POST:新しいリソースを追加する
    • PUT:既存リソースの更新
    • DELETE:リソースの削除
    • PATCH:リソースの一部変更
  • データベースでの例え
    • GET /users テーブル一覧を取得
      POST /users テーブルに新規追加
      GET /users/:id テーブルで1行取得
  • エンドポイント設計
    • 複数形の名詞を使う
    • やむを得ず単語をつなげる際はハイフン
    • 検索結果が多い場合はページングさせる
  • クエリパラメータとパスの使い分け
    • 一意なリソースを表す情報はパスにする
    • 省略可能な場合はクエリパラメータにする

◼︎ 終わりに

1章は当然APIが何かというところから始まり、重要性やAPIにはどんな種類があるのかが記載されています

2章はエンドポイント設計とリクエストの形式ということで今まで感覚的に学んできたことを文章で学べたのでとても参考になりました

続き
「Web API: The Good Parts」読書メモ 3章~4章
「Web API: The Good Parts」読書メモ 5章~6章

API

コメントを書く

※ Emailは公開されません

※ コメントは承認されると下記に表示されます

コメント一覧

最近の投稿

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

Netlify Formsを使ってブログサイトにコメント機能を追加する方法を調べたので紹介 Netlify FormsはNetlifyに標準機能として用意されているフォーム機能 サーバレスなので別途コメント用にサーバを用意する必要がなくHTMLを埋め込むだけで準備できる

カテゴリ一覧

タグ一覧