API 概要
はじめに
API(主にREST)と前提知識となるWebの概要について
Web
現在、APIデータのフォーマットの主流はJSON
前提としてWebに関係が深い用語説明
HTTP
通信のためのルール(プロトコル)
リソース
Web常に存在する名前を持ったあらゆる情報
URI現在APIの
リソースを識別するID 場所+名前 (URLは場所のみ)がわかる
WebサイトはブラウザからHTTPでサーバーにアクセスしHTTPでURIを取得し表示する
例 お天気情報(名前) https://weather.yahoo.co.jp(場所)
HTML
Webで表示するための文書フォーマット
URI
URI構文
①URI スキーム
通信手段 (http or https)がほとんど
②ホスト名
ドメイン名orIPアドレス どの住所か〜
③ポート番号
TCPポート番号 どのドアか〜
④パス
ディレクトリのパス どこの部屋のどこのタンスのどこの引き出しの〜
⑤クエリパラメータ
名前=値形式の追加情報
⑥URIフラグメント
Webページ内の位置 HTMLでidで設定するような
クールなURI設計
クールなURIを設計する上で抑えるべきポイント
プログラミング言語に依存した情報は含めない
ファイル拡張子や大文字など
メソッド名やセッションIDを含めない
URIには「リソースを指す名詞」を使う
動詞は使わない
なるべくシンプルかつ人間が読んで理解できる
URLの変更
301 Redirectを使って変更を知らせる
変更前のURLにアクセスした人を自動的に新しいURLへ飛ばす
新しいURLを新規として扱うのではなく変更という形で扱うことにより信用情報も引き継がれSEO的にも良い
HTTP
TCP/IPの4階層モデル
HTTPはTCP/IP(インターネットの国際規格)がベースになっている
TCP/IPは4つの階層により構成されている
アプリケーション層
アプリケーションごとの通信プロトコルを決定する
トランスポート層
データ転送の抜け漏れをチェックする
送られたデータがちゃんと届いているか
インターネット層
IPアドレスを割り当て通信を行う
データを送る
ネットワークインターフェース層
LANケーブルなど物理的な層
主要なHTTPメソッド
GET
リソースを取得する
POST
リソースの作成、リソースへのデータの追加
PUT
リソースの更新(リソース対象が存在しなければ新規作成)
A⇒Bへ値を変更する処理は何回実行してもBのままなのでべき等
DELETE
リソースの削除
HEAD
リソースのヘッダー取得
OPTIONS
リソースがサポートしているメソッドの取得(このリソースにはGETとPUTしかできませんよ〜)
APIの操作
json-server(jsonファイルをAPIサーバーのリソースと見立てAPIを作るパッケージ)をインストール
% npm install -g json-server
リソースの確認
今回はdb.jsonを使用する
% json-server --watch db.json
//結果
Resources
http://localhost:3000/hogehohe
Home
http://localhost:3000
HTTPメソッドを実行する
### GET
`curl -X GET "http://localhost:3000/hogehoge" -v`
### POST
`curl -X POST -H "Content-Type: application/json" -d '{"id": 4, "title": "ホゲホゲ"}' "http://localhost:3000/hogehoge" -v`
### PUT
`curl -X PUT -H "Content-Type: application/json" -d '{"id": 4, "title": "ふーーー"}' "http://localhost:3000/hogehoge/4" -v`
### DELETE
`curl -X DELETE "http://localhost:3000/hogehoge/4" -v`
Author And Source
この問題について(API 概要), 我々は、より多くの情報をここで見つけました https://qiita.com/exsrx97/items/9710439abe97fcd18200著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .