0

これは私のJerseyRestWebサービスのいくつかのメソッドがどのように見えるかです。ユーザー設定を更新するいくつかのメソッドがあります:

@PUT
@Path("/langauge")
@Consumes("text/plain")
public void updateLanguage(String lang) {

    ***check validity of the lang by string comparisons**
     and update database with the new language*
}

@PUT
@Path("/threshold")
@Consumes("text/plain")
public void updateThreshold(Long threshold) {

   *//check value and update in server*
}

ここでいくつか質問があります。

1-更新オプションごとに異なるリソースパスを使用する代わりに、1つのリソースを作成し、クエリパラメーターで更新する方がよいでしょうか。これはより落ち着きのあるように見えますが、実際に次のようなものに変更する必要があるかどうかはわかりません。将来、更新するパラメーターが非常に乱雑になるよりも多い場合、独立したパスがある方が明確に見えるからです。

@PUT
@Path("/settings/{lang}/{threshold}")
@Consumes("text/plain")
public void updateSettings(@PathParam("threshold") String thre,
        @PathParam("lang") String lang,
        @DefaultValue("") @QueryParam) {


}

2-別の質問は、言語を更新しているときに、言語を文字列として受け入れ、それがサーバーで有効かどうかを確認することです。したがって、クライアントがこのメソッドを使用する場合、有効なパラメーターとして正確に何を送信する必要があるかわかりません。これをよりユーザーフレンドリーにする方法はありますか?WADLファイルにコメントを付けることはオプションですが、これを行う別のREST方法はありますか?

4

2 に答える 2

0

答え:

1) これらは別個のリソースであるため、別個のサービス メソッドが必要です。したがって、以前のアプローチは素晴らしいです。これにより、コードが柔軟になります。

2) 各リソース (この場合は言語) に一意の ID を付与し、それを使用して次のように言語を更新できます。

api/language/{languageId}

この ID は、データベースを介して自動生成するか、他のメカニズムを定義することができます。

于 2013-01-04T13:10:29.167 に答える