0

多くのjqueryグリッドコントロールで使用されるデータを提供するためにasp.net webapiを使用するシステムを設計しています。ページがロードされた後、グリッドはデータをコールバックします。ユーザー テーブルとプロジェクト テーブルがあります。これらの間には、多対多の関係を格納するメンバーシップ テーブルがあります。

User
userID
Username
Email

Project
projectID
name
code

Membership
membershipID
projectID
userID

私の質問は、このデータと関係を webapi として説明する最良の方法は何ですか?

私は次のルートを持っています

GET: user  // gets all users
GET: user/{id}  // gets a single user
GET: project
GET: project/{id}

それを行う1つの方法は、次のようにすることだと思います:

GET: user/{id}/projects  // gets all the projects for a given user
GET: project/{id}/users  // gets all the users for a given project

ルートとコントローラーの構成がこのためにどのように見えるべきか、またはこれが正しい方法であるかどうかさえわかりません。

4

2 に答える 2

0

そのための最新の標準は、 RESTと呼ばれる非常に単純なアプローチです。よく読んで実装してください。

于 2013-01-31T01:21:17.857 に答える
0

Ph0en1x が言ったように、REST は Web サービスの新しいトレンドです。提案されたルートのいくつかは、すでに正しい軌道に乗っているようです。私は自分の仕事で REST 設計を行ってきましたが、次の点について検討する必要があります。

  1. ルートに一貫性を持たせてください。あなたはすでにそれを行っていますが、別の開発者がルートの作成を開始する時期/場合に注意してください。ユーザーは、API を使用するための一貫したルートを望んでいます。

  2. 複雑にしないでおく。主な目標は発見可能性です。つまり、私があなたのシステムの通常のユーザーであり、ユーザーとプロジェクトがあり、おそらく「目標」と呼ばれる別のエンティティがあることを知っている場合... /goal を推測して、目標のリストを取得したいということです。それはユーザーをとても幸せにします。ドキュメントを参照する必要が少ないほど、より良い結果が得られます。

  3. クエリ文字列に大量のジャンクを追加しないでください。私たちは現在、私の仕事でこれに苦しんでいます。API がある程度の牽引力を得ると、ユーザーはよりきめ細かい制御を望むかもしれません。URL が乱雑にならないように注意してください。/user?sort=asc&limit=5&filter=...&projectid=... のようなもの

  4. URL は適切でシンプルなものにしてください。繰り返しになりますが、私はよく設計された API でこれを気に入っています。http://api.twitter.comのようなものを簡単に思い出すことができます。http://www.mylongdomainnamethatishardtospell.com/api/v1/api/user_entity/user ...のようなものは覚えにくく、イライラします。

  5. REST API が Web 上にあるからといって、それがクライアント側のみのコードの通常のメソッドとまったく異なるというわけではありません。どのメソッドも 3 つ以下のパラメーターを持つべきであるという引数を読みました。この考え方は(3)と似ています。拡張したい場合は、パラメーターを追加するのではなく、メソッド/ルートを追加することを検討してください。

私は最近、REST API に何を求めているかを理解しています。それは、直観、見つけやすさ、シンプルさ、そして複雑なドキュメントを常に掘り下げる必要を回避することです。

于 2013-01-31T03:46:15.917 に答える