2016-04-29 10 views
2

いくつかの設定プロパティを持つWebサーバーがあり、REST APIを使用してそれらを変更できるようにしたいと考えています。一意のリソース(URLは単数形ですか?)のためのREST URL

{ 
    "maxUsers" : 10, 
    "refreshPeriodInMin" : 5 
} 

私は、 "設定" オブジェクトでこれを表現したいと思います。 RESTの原則によると、私はそれを行うための最善の方法があると信じて:

GET/PUT/POST/DELETE /configurations/{id} 

しかし、私の場合は私が唯一の構成オブジェクトを持っていると私は

GET /configurations 

だけを照会しなければならないという考え方が好きではありません1つのオブジェクトに対して。

1つのオブジェクトのみが私が見つけた最も簡単な解決策は、IDを使用することがありますので=デフォルト

GET /configurations/default 
  • のようなものを与えるだろう「ユニークな」リソースを表現する良い方法はあります?コメントでdjmortonが言及したように、/configurationはRESTの世界では正しいでしょうか?

もう1つの解決策は、プロパティごとに1つのオブジェクトを持つことです。これは与えるだろう、そのソリューションと

GET /properties/maxUsers 

問題は、あなたがそれを照会できるようにするプロパティの名前を知っておく必要があるということです。複数の変更がある場合は、いくつかのクエリを実行します。

+1

設定オブジェクトが1つしかない場合は、/ configurations/{id}ではなく/ configurationを使用するだけです。次に、GETを使ってフェッチし、PUTを使って更新します。新しいURIで新しいリソースを作成していないので、通常POSTは使用しません。 – djmorton

+0

私は/リソースを削除すると、私はGET /リソースがどうなるのでしょうか?私は404を得る?その場合、リソースはIDであるため、わかりません。 –

+0

RESTですべてのHTTP動詞をサポートする必要はありません。誰かがDELETEを使ってそれをクリアする能力を持たない限り、リソースを削除しようとすると405を返します。その場合、GETはDELETE後に単に404を返すことができます。 – djmorton

答えて

1

本当に単数なことを表している場合は、リソースを単数で保管してください。あなたが持っているだけの場合は、そのリソースを作成または更新したいときにそのリソースに単にPUTしないで、それを取得したいときにそのリソースからGETする必要はありません。

削除できない場合は、DELETE要求で405メソッドを許可しないでください。削除できる場合、そのリソースに対するDELETE要求は受け入れられます。その後、GET要求は404 NOT FOUNDを返します。

多くの意味で、/ configuration/defaultのようなパスにid要素を追加すると、デフォルトの設定に加えて/ configurationに新しい設定をPOSTできるようになるため、ユーザを混乱させるでしょう。

重要な点は、APIのコンシューマーにとって分かりやすく直感的なことです。

関連する問題