ユーザ用ツール

サイト用ツール


サイドバー

目次

ホーム










.

protocol:restapi


ホーム#プロトコル に戻る

REST API(RESTful API)で、HTTPメソッドを利用して通信

REST APIとは

  • REpresentational State Transfer
  • ステートレス:セッション管理や状態管理などを行わない
  • URL/URIですべてのリソースを一意に識別
  • 同じURLに対する呼び出しには常に同じ結果が返されることが期待


リソースの操作はHTTPメソッドによって指定

HTTPの一般的なリクエストメソッドを使用する

HTTPメソッド 意味 備考
GET 取得 結果はXMLやHTML、JSONなどで返される。
POST 新規作成
PUT 更新
DELETE 削除

getの例

$ curl -X GET "http://localhost:3000/movies/3"

postの例

$ curl -X POST -H "Content-Type: application/json" -d '{
  "id": 3,
  "name": "Inception",
  "director": "Christopher Nolan",
  "rating": 9.0
}' "http://localhost:3000/movies"


レスポンス

ステータス

200 一般的な成功レスポンス
201 POST メソッドの成功レスポンス
400 サーバーが処理できない不正確なリクエスト
404 リソースが見つかりません

メッセージ本文

XMLやJSONなどで返される。


認証

HTTP 認証

Basic 認証

  • クライアントはリクエストヘッダーでユーザー名とパスワードを送信します。
  • base64 でエンコードします。

Bearer 認証(ベアラー)

  • ログインリクエストに対応してサーバーが生成する暗号化された文字列です。
  • クライアントは、リソースにアクセスするためにリクエストヘッダーでトークンを送信します。


API キー

  • サーバーは一意に生成された値を初めてのクライアントに割り当てます。
  • クライアントがリソースにアクセスしようとするたびに、一意の API キーを使用して自身を検証します。
  • クライアントはキーを送信する必要があるため、API キーの安全性は低くなり、ネットワークの盗難に対して脆弱になります。


OAuth

  • パスワードとトークンを組み合わせて、あらゆるシステムへの安全性の高いログインアクセスを実現します。
  • サーバーは最初にパスワードをリクエストし、次に認証プロセスを完了するために追加のトークンをリクエストします。
  • トークンはいつでも、また特定のスコープと寿命で経時的にチェックできます。


参考:フォームでのPUTやDELET

[html/css] httpのフォームでDELETEやPUTのメソッドを送る方法 - 脳汁portal

hidden属性でnameを_methodにし、valueを使いたい方式にする。

PUT

<form method="post" action="/">
    <input type="text" name="textArea">
    <input type="hidden" name="_method" value="PUT"> <!-- この1行を追加! -->
    <input type="submit" value="delete!!">
</form>
192.168.33.1 - - [22/Jul/2015:03:13:42 +0000] "PUT / HTTP/1.1" 404 466 0.0010

DELETE

<form method="post" action="/">
    <input type="text" name="textArea">
    <input type="hidden" name="_method" value="DELETE"> <!-- この1行を追加! -->
    <input type="submit" value="delete!!">
</form>
192.168.33.1 - - [22/Jul/2015:03:12:27 +0000] "DELETE / HTTP/1.1" 200 212 0.0014


ツール

Swagger

  • REST API設計をする際にはオープンソースのフレーム
  • スペックを書いておけば自動的にドキュメント生成を行いリクエストまで行ってくれる


参考


protocol/restapi.txt · 最終更新: 2022/10/27 01:15 by kurihara

ページ用ツール