Restful APIの作成について...


RESTful API
RESTサービスのURIパスの設計
パス要素を使用して、サーバ上で実行されているエンドポイントの場所を検索します.RESTエンドポイントには、パラメータとドキュメントの場所を含めることができます.
query-stringは、ページ番号などのパラメータを渡したり、返されるデータを制御したりするためにソートを使用するため、同様に重要です.
以下に、URI形式を指定する一般的なルールを示します.
  • スラッシュ(/)は、リソース間の階層関係を表すために使用されます.
  • URIの最後にスラッシュを含めるべきではありません.
  • は、毒性を高めるためにハイフン(-)を使用する必要がある.
  • 下線文字は()URIでは使用できません.
  • URIパス部分の大文字と小文字を区別し、小文字を使用することが望ましい.
  • パスは、ドキュメント(ドキュメント)、コレクション(収集)、リポジトリ(ストレージ)、コントローラ(コントローラ)に分けられます.
    collection
    コレクションは、通常、単一のドキュメントにアクセスするためのパラメータによって区切られる複数のリソースを含むディレクトリです.例:
    GET/cats    -> 모든 고양이가 컬렉션에 들어있다.
    GET/cats/1  -> 1번 고양이를 위한 하나의 문서
    コレクションを定義する場合、コレクションの名前は上記の例のように猫のような複数型を指す必要があります.
    document
    ドキュメントは、データベース内のロー(row)に似たオブジェクトを指すリソースです.1つのドキュメントには、サブドキュメントまたはコレクションなどのサブリソースがあります.例:
    GET/cats/1              -> 1번 고양이를 위한 문서
    GET/cats/1/kittens      -> 1번 고양이의 모든 새끼 고양이들
    GET/cats/1/kittens/1    -> 1번 고양이의 1번 새끼 고양이
    controller
    コントローラリソースはプロセスと似ていますが、通常は標準CRUD機能にリソースをマッピングできない場合に使用されます.
    コントローラの名前は、サブリソースのないURIパスの最後の部分です.
    コントローラにパラメータが必要な場合は、通常query-stringにパラメータが含まれます.
    POST/cats/1/feed            -> 1번 고양이에게 먹이주기
    POST/cats/1/feed?food=fish  -> 1번 고양이에게 물고기로 먹이주기
    コントローラ名を定義するときは、常に動詞を使用する必要があります.動詞は、給餌(feed)や送信(send)などの動作や状態を表す語である.
    store
    リポジトリは、クライアントが管理するリポジトリであり、クライアントがリソースを追加、検索、削除できるようにします.コレクションとは異なり、リポジトリは新しいURIを作成するのではなく、クライアントが指定したURIを使用します.
    PUT/cats/2
    上記の例では、ID 2の猫を記憶している.
    HTTP METHOD
    GET
    GETメソッドは、リソースを検索するために使用されます.通常、本明細書(request body)は一緒に渡されませんが、無効なリクエストではありません.
    // request
    GET/v1/cats/1
    
    //response
    HTTP/1.1 200 OK
    Content-Type: application/json
    Content-length: xxxx
    
    {"name":"kitty","weight":15}
    POST
    POSTメソッドは、コレクションの新しいリソースを作成したり、コントローラを実行したりするために使用されます.POSTは一般に非べき乗等性を有する.1回目の呼び出しと同じ要素で、複数回の呼び出しで同じ要素が複数生成されます.(ID値が異なる場合があります)
    // request
    POST/v1/cats HTTP/1.1
    Content-Type: application/json
    Content-length: xxxx
    
    {"name":"kitty","weight":15}
    
    // response
    HTTP/1.1 201 Created
    Content-Type: application/json
    Content-length: xxxx
    Location: /v1/cats/123
    PUT
    PUTメソッドは、変更可能なリソースを更新するために使用され、常にリソース識別情報を含む必要があります.また、PUTは、POSTとは異なり、1回の要求と同じリソース状態を維持する複数の要求のべき乗等性を有する.
    // request
    PUT/v1/cats HTTP/1.1
    Content-Type: application/json
    Content-length: xxxx
    
    {"name":"king","weight":22}
    
    // response
    HTTP/1.1 201 Created
    Content-Type: application/json
    Content-length: 0
    PATCH
    PATCH法は部分更新を実行するために用いられる.たとえば、猫の名前だけを更新する場合は、変更する詳細のみを含むPATCHリクエストを作成できます.
    // request
    PATCH/v1/cats/123 HTTP/1.1
    Content-Type: application/json
    Content-length: xxxx
    
    {"name":"kking"}
    
    // response
    HTTP/1.1 204 No Body
    Content-Type: application/json
    Content-length: 0
    しかし、通常、PATCHではなくPUTを使用してオブジェクト全体をコピーし、更新後に返されるモードでより多くのコードを記述します.
    DELETE
    DELETEメソッドは、リソースを削除するために使用されます.削除するリソースIDは通常、本文以外のパスの一部として使用されます.
    // request
    DELETE /v1/cats/123 HTTP/1.1
    Content-Type: application/json
    Content-Length: 0
    
    // response
    HTTP/1.1 204 No Body
    Content-Type: application/json
    Content-Length: 0
    HEAD
    HEADメソッドは、GETではなく、クライアントがサーバ上にリソースがあるか、メタデータを読み込もうとしているかを検証するために使用されます.
    // request
    HEAD/v1/cats/123 HTTP/1.1
    Content-Type: application/json
    Content-Length: 0
    
    // response
    HTTP/1.1 200 OK
    Content-Type: application/json
    Last-Modified: 2021/08/05
    OPTION
    OPTIONメソッドは、サーバ上のリソースに対するクライアントの可能な動作を理解するために使用されます.通常、サーバは、このリソースで使用できるHTTPメソッドを含むAllow Headerを返します.
    // request
    OPTION/v1/cats/123 HTTP/1.1
    Content-Length: 0
    
    // response
    HTTP/1.1 200 OK
    Content-Length: 0
    Allow: GET, PUT, DELETE