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

Published: 2016年2月21日 by tomsato

◼︎ 概要

「Web API: The Good Parts」3章読書メモ 気になったところをメモ程度にまとめます

◼︎ 本について

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

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

◼︎ 3章

目次

  1. レスポンスデータの設計
    1. データフォーマット
    2. JSONPの取り扱い
    3. データの内部構造の考え方
    4. 各データのフォーマット
    5. レスポンスデータの設計
    6. エラーの表現

気になったところ

  • レスポンスのデータフォーマット
    • JSON一択
    • 要望があって余裕があればXMLもあるといい
  • データフォーマットの指定方法
    • 方法 使用例
      クエリパラメータを使う https://api.example.com/v/users?format=xml
      拡張子を使う https://api.example.com/v/users.json
      リクエストヘッダでメディアタイプを指定する GET /v1/users
      Host: api.example.com
      Accept: application/json
  • JSONP
  • Chatty  API
    • Chatty(おしゃべりな) API: 1つの作業を完結させるために複数回APIアクセスが必要になるAPIの設計
    • Chatty APIは良くない
  • エンベロープ
    • 全てのデータ(レスポンスやリクエスト)を同じ構造でくるむこと
    • HTTPがエンベロープの役割をするのでやるべきでない
  • 配列
    • レスポンスを配列で返すとJSONインジェクションされる可能性がある
    • 従って配列をオブジェクトで包むなどの工夫が必要
  • レスポンスデータの名前
    • キャメルケースが良い
      • JavaScriptの命名規則においてキャメルケースの利用がルール付けされているケースが多い
      • GoogleのJSON style guideでもキャメルケースを利用することが明記されている
    • 少ない単語数
    • 変に省略しない
    • 他のAPIを参考にする
    • 単数形/複数形に気をつける
  • 日付のフォーマット
    • RFC 3339を使うのが良い(例:2016-02-03T04:05:06+09:00)
  • 整数の限界
    • int型は表現可能な数が決まっているため巨大な数をJSONで返す際は文字列として返すと良い
    • Twitterではidの他にid_strという数値を文字列として格納したものを返す

◼︎ 4章

目次

  1. HTTPの仕様を最大限利用する
    1. HTTPの仕様を利用する意義
    2. ステータスコードを正しく使う
    3. キャッシュとHTTPの仕様
    4. メディアタイプの指定
    5. 同一生成元ポリシーとクロスオリジンリソース共有
    6. 独自のHTTPヘッダを定義する

気になったところ

  • メディアタイプ
    • 簡単に言うとデータ形式のこと
    • レスポンスではContent-Typeというヘッダを利用して指定する
    • どういったものか
      Content-Type: application/json レスポンスデータがJSONであることを意味する
      Content-Type: image/png PNG画像であることを意味する
    • 記述方法
    • トップレベルタイプ名 / サブタイプ名 [ ; パラメータ ]
    • 名前 意味
      トップレベルタイプ名 そのデータ形式が大別してテキストなのか、画像なのかなどカテゴリを表す
      サブタイプ名 具体的なデータ形式
      パラメータ 付加情報を付ける場合に利用する
    • リクエストではContent-TypeとAcceptを使う
    • Accept: どんなメディアタイプを受け入れ可能かをサーバに伝える
  • クロスオリジンリソース共有

◼︎ 終わりに

3章4章ではステータスコードについての話とキャッシュの話などが出てきたのですがこのページでまとめるとボリュームが増えてしまうので省略しました
ためになりそうな話だったのでいつか別途まとめるかもしれません

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

API

Share

最近の投稿

NetlifyのSplit TestingとFunctionsについて使い方をまとめる Split TestingはGitHubのブランチをベースにしたA/Bテストを行うための機能のことで、FunctionsはNetlifyでAWS Lambdaを使うことができる

NetlifyとはHTMLなどの静的コンテンツのみで構成されたWebサイトを閲覧できる形で配信するWebサービス GitHubやBitbucket、GitLabなどと連携して使うことができて、リポジトリにプッシュすることで自動でCI/CDを行うことができる、無料枠が豊富で独自ドメインを設定可能

WordPressからJekyll(GitHub Pages)に移行した手順をまとめる。 お金的な事情や使いやすさなどの理由で無料のJekyll+GitHub Pagesに移行した。JekyllとはMarkdown等から静的ページを生成する静的サイトジェネレータ

Scala開発のためにScalaらしさをまとめる 言語設計者の設計思想を元にScalaらしさについてまとめる オブジェクト指向と関数型の融合について

StorybookとはUI開発環境を提供するツール React、React Native、Angular、Vueなどをサポートしている ユーザーは独立した開発環境でコンポーネントを個別に作成して挙動の確認をテストできたり、コンポーネントを一覧にしてカタログ化できるので他の人に紹介する時に使えたりする

カテゴリ一覧

タグ一覧