安らかなWebサービスを作成していますが、入力パラメーターを使用してサービスを作成する方法と、Webブラウザーからサービスを呼び出す方法を知りたいと思いました。
例えば
@Path("/todo")
public class TodoResource {
// This method is called if XMLis request
@PUT
@Produces( {MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public Todo getXML() {
Todo todo = new Todo();
todo.setSummary("This is my first todo");
todo.setDescription("This is my first todo");
return todo;
}
そして、私は http:// localhost:8088/JerseyJAXB/rest/todo を使用して呼び出すことができます
そして、私は次のようなメソッドを作成したい
@Path("/todo")
public class TodoResource {
// This method is called if XMLis request
@PUT
@Produces( {MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public Todo getXML(String x, String y) {
Todo todo = new Todo();
todo.setSummary(x);
todo.setDescription(y);
return todo;
}
SOAPベースのWebサービスの場合、このように呼び出します
http:// localhost:8088/JerseyJAXB/rest/todo?x = abc&y = pqr
しかし、restを使用してそれを呼び出す方法を知りたいし、restとjerseyを使用するときに上記の例で行っているようにパラメータを渡すこともできます。
あなたはできる。次のようなものを試してください:
@Path("/todo/{varX}/{varY}")
@Produces({"application/xml", "application/json"})
public Todo whatEverNameYouLike(@PathParam("varX") String varX,
@PathParam("varY") String varY) {
Todo todo = new Todo();
todo.setSummary(varX);
todo.setDescription(varY);
return todo;
}
次に、このURLを使用してサービスを呼び出します。
http:// localhost:8088/JerseyJAXB/rest/todo/summary/description
クエリパラメータが必要な場合は、@QueryParam
。
public Todo getXML(@QueryParam("summary") String x,
@QueryParam("description") String y)
ただし、プレーンWebブラウザーからPUTを送信することはできません(今日)。 URLを直接入力すると、GETになります。
哲学的には、これはPOSTのように見えますが。 RESTでは、通常、POSTを共通リソースに、/todo
、そのリソースは新しいリソースを作成して返すか、/todo/<id>
、作成および/または更新用。
注意してください。これには@GET(@PUTではない)が必要です。
別の方法は、すべてのQueryParamの代わりにUriInfoを取得することです
その後、コードで必要に応じてqueryParamを取得できます
@GET
@Path("/query")
public Response getUsers(@Context UriInfo info) {
String param_1 = info.getQueryParameters().getFirst("param_1");
String param_2 = info.getQueryParameters().getFirst("param_2");
return Response ;
}
これを試してみることができます...
http:// localhost:8080/WebApplication11/webresources/generic/getText?arg1 = hello ブラウザで...
package newpackage;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PUT;
import javax.ws.rs.QueryParam;
@Path("generic")
public class GenericResource {
@Context
private UriInfo context;
/**
* Creates a new instance of GenericResource
*/
public GenericResource() {
}
/**
* Retrieves representation of an instance of newpackage.GenericResource
* @return an instance of Java.lang.String
*/
@GET
@Produces("text/plain")
@Consumes("text/plain")
@Path("getText/")
public String getText(@QueryParam("arg1")
@DefaultValue("") String arg1) {
return arg1 ; }
@PUT
@Consumes("text/plain")
public void putText(String content) {
}
}