あなたの懸念が残りのプリンシパルに当てはまる場合。
次に、通常、留意すべき 4 つのポイントがあります。
- Web サービスのベース URI
- Web サービスがサポートするデータのインターネット メディア タイプ。
多くの場合、これは JSON、XML、または YAML ですが、その他の有効なインターネット メディア タイプにすることもできます。
- HTTP メソッド (GET、PUT、POST、DELETE など) を使用して Web サービスによってサポートされる操作のセット。
- API はハイパーテキスト ドリブンである必要があります
詳細については、http://en.wikipedia.org/wiki/Representational_state_transferを参照してください。
そうは言っても、上記のコードを以下の疑似コードに近いものに変更することをお勧めします。
1) リソースの存在が重要です。投稿を、URI でアクセスできるリソースのコレクションと考えてください (認証と承認は、処理したい他の懸念事項です)。
api.domain.com/resources/posts => この URI は投稿のコレクションを指します
2) HTTP メソッド/動詞を使用してサポートする一連の操作を定義する必要があります。例として、次のようにしてコレクションのメンバーを 1 つだけ取得する場合があります。
api.domain.com/resources/posts/12
以下は、この URI の着信要求で検出される可能性のある要求ヘッダーと本文です。
Accept: application/json
Content-Type: application/json
Request Url: http://api.domain.com/resources/posts/12
Request Method: GET
アプリケーションは、URI で操作を規定する必要なく、そのタイプの要求を処理できる必要があります。ポイント (1) に戻ります。
URI を次のように記述するのではなく、
domain.com/api/posts/すべて
URI は次のようにモデル化する必要があります。
コレクションから 1 つのメンバーを取得するための resources/type/item としての resources/posts/12、コレクション
全体を操作するための resources/type としての resources/posts。
コードの例を次に示します。
一般的な抽象クラス ここで、いくつかの一般的なタスクを実装できます。サービスベースの実装を使用している場合、これはサービスによっても実現できます。
abstract class ResourcesController extends AppController {
}
class PostResourcesController extends ResourcesController {
/**
* By the time this method is called in your controller/class, you already know
* that the HTTP method is GET.
*
* @param Request\$_GET $request A request instance
* @param int $postId The post ID to retrieve
*
* @return Response A reponse instance
*/
function getPost(Request $Request, $postId = null)
{
/**
* Here you can use the request object to get
* the response content type
* the requesting client accepts. Example JSON or XML.
*/
/**
* using the $postId you can then query your database
* to retrieve a post with that ID or use a sort of
* service.
*/
/**
* Once you implemented a you logic
* you can build a response to return.
*/
}
}
このコードは不完全ですが、実際の Restful API がどのようなものかを理解していただければ幸いです。
「リソースの識別子と必要なアクションという 2 つのことを知ることで、アプリケーションがリソースとやり取りできる」ことを確認することが重要です。
うまくいけば、これは役に立ちました。