4

REST URI (サンプル:

http://localhost:8080/com.vogella.jersey.first/rest/todo/test/1/abc,test 

、ここで abc と test は、渡されたコンマ区切りの値です)。

現在、この値を文字列として取得し、分割して個々の値を取得しています。現在のコード:

@Path("/todo")
public class TodoResource {
// This method is called if XMLis request
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/test/{id: .*}/{name: .*}")
public Todo getXML(@PathParam("id") String id,
        @PathParam("name") String name) {
    Todo todo = new Todo();
    todo.setSummary("This is my first todo, id received is : " + id
            + "name is : " + Arrays.asList(name.split("\\s*,\\s*")));
    todo.setDescription("This is my first todo");
    TodoTest todoTest = new TodoTest();
    todoTest.setDescription("abc");
    todoTest.setSummary("xyz");
    todo.setTodoTest(todoTest);
    return todo;
}
}

同じことを達成するためのより良い方法はありますか?

4

2 に答える 2

6

サービスで何を達成しようとしているのかはわかりませんが、クエリ パラメーターを使用して 1 つのパラメーターに対して複数の値を取得する方がよい場合があります。以下の URL を検討してください。

http://localhost:8080/rest/todos?name=name1&name=name2&name=name3 

REST サービスのコード スニペットを次に示します。

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path("/todos")
public Response get(@QueryParam("name") List<String> names) {

    // do whatever you need to do with the names

   return Response.ok().build();
} 
于 2014-10-26T09:49:12.780 に答える
0

コンマで区切られた値がいくつ得られるかわからない場合は、私が最善の方法を見つけることができた限り、分割を行ってください。カンマで区切られた 3 つの値が常にあることがわかっている場合は、それらの 3 つを直接取得できます。(たとえば、緯度、経度、または x、y、z がある場合、3 つのパス変数で取得できます。(以下に投稿されたスタックオーバーフロー リンクの 1 つを参照してください)

行列変数を使ってできることはたくさんありますが、それらには が必要です。そして、あなたが使用しているものではないキーと値のペア。

私が見つけたもの(マトリックスのものとは別に) 残りのサービスのgetメソッドのURLでコンマ区切りのパラメーターを渡す方法 Jerseyでセミコロンで区切られたPathParamsをマップするにはどうすればよいですか?

于 2014-10-25T17:58:20.737 に答える