2017-12-28 40 views
0

RESTfulなAPIデザインに関連する質問があります。 GET/POST/PUTリソース(ユーザー)にRESTfulなAPIがあります。私は私のデザインはここREST APIの設計 - 異なるパラメータでRESTを通じてリソースを取得/ポスト/入れよう

正しいかどうか..私はちょうど上記の設計が良いかどうかを知りたいと思った

/users: 
    get:  
    queryParameters: 
     joinDate: 
     displayName: get all used based on join date   
    post: 
    displayName: Add new user 

/{lastName}: 
    get: 
     displayName: Get all users based on last name 
/{id}: 
    put: 
     displayName: Update a particular user 

例です

非常に明確ではないよすべてのヘルプ感謝します!

答えて

0

CRUD(作成、読み取り、更新、削除)は、データリポジトリで実行される基本操作を意味します。レコードまたはデータオブジェクトを直接処理します。これらの操作とは別に、レコードはパッシブエンティティです。通常は、データベースのテーブルとレコードだけです。

RESTはリソース表現を操作し、それぞれがURLで識別されます。これらは通常、データオブジェクトではありませんが、複雑なオブジェクト抽象化です。

たとえば、リソースにはユーザーのコメントを使用できます。つまり、 'コメント'テーブルのレコードだけでなく、 'ユーザー'リソースとの関係、コメントの投稿、それが答える別のコメントなども意味します。

コメントの操作は基本的なデータベース操作ではなく、元のポスターにアラートを発したり、ガマティックなポイントを再計算したり、フォロワーストリームを更新するなどの重大な副作用があります。

リソース表現には、ハイパーテキスト(HATEOASの原則をチェック)が含まれているため、設計者はリソース間の関係を表現したり、操作のワークフローでRESTクライアントを指導できます。

要するに、CRUDは(主にデータベースと静的データストレージ用の)セットプリミティブ操作ですが、RESTは非常に高水準のAPIスタイルです(主にウェブサービスやその他の「ライブ」システム用)。

最初のデータはデータを操作し、もう1つはデータを操作し、もう1つは動作中のシステムとやり取りします。

to Learn more about CRUD

ので、私の観点から、あなたは完全に正しいです!

+0

ありがとうございます。 –

+0

ありがとうございます。要求が到着したときにサーバーが要求をリダイレクトする必要があるパスがわからないため、{lastName}と /{id}の2つのパスが存在すると、私のツールは不満です。 私は以下のようにputメソッドをリソースパスの下に移動して、これが正しいことを願っていますか? /ユーザー:のdisplayName::のdisplayName:すべての日付に ポストへの参加をもとに慣れるjoinDate: queryParameters:取得新しいユーザー プットを追加します。のdisplayNameを:のdisplayName::取得:特定のユーザー /{lastNameという}を更新し、すべての取得姓に基づいてユーザー –

0

私はこのようにします。

POST /users 
    Creates a single user 

GET /users 
    Reads all users 

GET /users;joinDate=yyyy-MM-dd 
    Reads all users whose join date matches to given 

GET /users;joinDate=yyyy-MM-dd;lastName=Some 
    Reads all users whose join date matches to given 
    and whose last name matches to given 

GET /users/{userId} 
    Reads a user whose {id} matches to given 

GET /users;joinDate=yyyy-MM-dd/{userId} 
    Reads a user whose id matches to given 
    among those who joined on specified day. 
関連する問題