2

RESTfulサービスを構築しようとしていますが、いくつかの問題に直面しています。これらの問題(質問)について、架空のRESTfulサービスの例を使用して説明します。

たとえば、自分のサイトに「ニュース」サービスが必要です。ニュースには、ローカルニュースとグローバルニュースのさまざまな種類があります。ニュースは管理者によって追加されます。ユーザーは、ローカルニュースとグローバルニュースの両方を(個別にまたはまとめて)表示できます。ニュースはページごとに表示されます。ユーザーは正確なニュースを見ることができます。

だから、私はこのタスクのためにそのような動詞-名詞テーブルを作成しました:

GET  /news               - Get all news
POST /news               - Create news
GET  /news/{id}          - Show the news with id={id}
PUT  /news/{id}          - Edit the news with id={id}
GET  /news/{type}/{page}/{per_page} - Get news page #{page} of type {type}
GET  /news/{page}        - Get news page #{page} of both types

したがって、問題があります。

1){page}と{id}を区別する方法は?たぶん{id}は数字だけですが、{page}-'p'で始まる文字列(たとえば'p1'}?

2)ユーザーは値「per_page」を変更できます-ページに表示されるニュースの数。複雑すぎません/news/{type}/{page}/{per_page}か?どうすれば簡単にできますか?

3)このサービスでは、ブラウザのURLはどのように表示されますか?URLは上の表のURIと正確ではありませんか?例えば:

/news - Viewing news (1st page with default 'per_page' and default 'type')
/news/{type} - Viewing news (1st page with default 'per_page' and type={type})
/news/{id} - Viewing exact news with id={id}
/news/{type}/{page}/{per_page} - Viewing exact page of news of exact type.

4)追加機能。たとえば、フィルター検索(日付、著者、またはタイトルでニュースを取得する)。これをRESTで実現するにはどうすればよいですか?フィルタオブジェクト(xmlまたはjson)はどのように送信する必要がありますか?フィルタの結果を使用してページのURLを作成するにはどうすればよいですか?/news/{date:12.12.2012,author:'admin'}または何かより良いですか?

私の大まかな英語で申し訳ありませんが、文法などの間違いを見つけた場合は、遠慮なく修正してください。

前もって感謝します。

4

2 に答える 2

3

I'd say you should use regular params for the type, page and per_page. Type, Page and Per_Page do not represent unique Resources, but are rather filters to the collection of News Resources. So I'd do

  • /news
  • /news/{id}
  • /news?type={type}&page={page}&per_page={per_page}

Same for additional filtering.

Make sure to check out http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_2

于 2012-01-08T10:57:03.747 に答える
1

Gordonが書いたように、リクエスト パラメータは通常どおり使用できます。REST は、クリーンでナイスな URL だけを意味するわけではないことに注意してください。

したがって、id と型パラメーターは uri のままにしますが、ページネーション パラメーターはクエリ文字列で追加されます。

また、さまざまな uri 部分を区別するために、Google のgdataで使用されているパターンを使用できます。つまり、パラメータの前に名前が付きます

/news
/news/id/{id}
/news/type/{type}

サーバー側でいくつかの解析を行うと、多くのパラメーター、オプションのパラメーターを追加でき、正確な順序を強制することはできません。

于 2012-01-08T11:41:39.483 に答える