HTTP API
HTTP APIの作成方法
1.URIの作成時に「リソース」を理解する.
例えば、上記4つのAPIが存在する場合、「リソース」は「ユーザ」となる.
クエリー、登録、修正、削除などの動詞をGET、POST、PUT、PATCH、DELETEなどの方法に変換することができます.
一般的な方法
その他の方法
リソースやメソッドでURIを記述できない場合、制御URIと呼ばれる動詞として登録する必要がある場合がある
http://api.example.com/cart-management/users/{id}/cart/**checkout**
http://api.example.com/song-management/users/{id}/playlist/**play**
上のチェックアウトとプレイはコントロールURIに対応しています
メソッドの特性
-セキュリティ(Safe):既存の値には影響しません
-べき乗等性(Idempotent):複数回のリクエスト後、結果値は1回のリクエスト後も変わらない.これには、リソースのリカバリなどの利点があります.
ex) DELETE/user/1
DELETE/user/1-->は削除されているため、再削除できません
また,再リクエスト中に他の場所でリソースを変更するなどのことは考えられない.
ex) GET/user/1
PUT /user/1
GET/user/1
-キャッシュ可能応答結果をサーバにキャッシュする場合、実際の操作はGETのみを使用し、他の方法では実行しにくいため、使用しにくい.
クライアントからサーバへのデータ転送
2つのデータ転送方式があります。
1.クエリー・パラメータによるデータ転送
クライアント->サーバへのデータ転送の4つのシナリオ
1.静的データ照会
テキスト、画像ファイルなどを静的に照会する場合は、リソースパスでのみ処理し、GETを使用することができます.
2.動的データ照会
クエリー・パラメータを使用してデータを動的にクエリーします.主にフィルタなどを用いてクエリーを行い,GETを用いる.
3.HTML Formデータ転送
(未使用の転送方法)HTMLソースのみを使用して転送します.actionやmethodなどを定義して使用できます.GETとPOSTのみ利用可能
<form action="/user" method="get">
<input name="username">
<input name="age">
<button type="submit">
Content-type defaultはx-www-form-urlencoded
クエリーパラメータのようにkey、valueとして作成しbodyで作成します.転送データをurl符号化処理する.
ファイルを転送する場合は、formラベル内で
enctype="multipart/form-data"
プロパティを使用します.4.HTTP APIデータ転送
サーバ-サーババックエンドシステム通信、アプリケーションクライアント、Webクライアント(Ajax)Content-type主にアプリケーション/jsonを使用
HTTP API設計例
1.POSTベースの登録例
• 회원 목록 /members -> GET
• 회원 등록 /members -> POST
• 회원 조회 /members/{id} -> GET
• 회원 수정 /members/{id} -> PATCH, PUT, POST
• 회원 삭제 /members/{id} -> DELETE
-クライアントは登録するリソースのURIを知らない.Location:/members/100
2.PUTベースの登録例(ファイル管理システム)**
• 파일 목록 /files -> GET
• 파일 조회 /files/{filename} -> GET
• 파일 등록 /files/{filename} -> PUT
• 파일 삭제 /files/{filename} -> DELETE
• 파일 대량 등록 /files -> POST
->プロジェクトのイメージ登録セクションをPUTに置き換える必要がある場合があります-クライアントはリソースURIを知る必要があります
-ストア(Store)
3.HTML FORM**の使用
• 회원 목록 /members -> GET
• 회원 등록 폼 /members/new -> GET
• 회원 등록 /members/new, /members -> POST
* 등록 폼 -> 등록으로 가는 URI(/new까지)는 대체로 맞춰주는 편이 좋다(리다이렉션 등을 고려해서)
• 회원 조회 /members/{id} -> GET
• 회원 수정 폼 /members/{id}/edit -> GET
• 회원 수정 /members/{id}/edit, /members/{id} -> POST
• 회원 삭제 /members/{id}/delete(컨트롤 URI) -> POST
•ドキュメント、コレクション、ショップを使用して、他の困難なプロセスを実行します.
ドキュメント、コレクション、ショップとは何かを混同している場合は、もう一度スクロールして参照してください.
•GET、POSTのみ対応のため、制限があります
•これらの制限を解決するために動詞のリソースパスを使用する
•POST上の/new、/edit、/deleteは制御URI
•HTTP手法による不明確な問題の解決(HTTP APIを含む)
Reference
Reference
この問題について(HTTP API), 我々は、より多くの情報をここで見つけました https://velog.io/@wngud4950/HTTP-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol