我正在创建宁静的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;
}
如果是基于肥皂的Web服务,我会像这样调用它
http://localhost:8088/JerseyJAXB/rest/todo?x=abc&y=pqr
但是我想知道如何使用rest调用它,并且我可以像上面的例子中那样使用rest和jersey来传递参数。
答案 0 :(得分:37)
你可以。 尝试这样的事情:
@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
答案 1 :(得分:10)
如果您需要查询参数,请使用@QueryParam
。
public Todo getXML(@QueryParam("summary") String x,
@QueryParam("description") String y)
但是你无法从普通的网络浏览器(今天)发送PUT。如果直接输入URL,则为GET。
哲学上,这看起来应该是一个POST。在REST中,您通常要么POST到公共资源/todo
,该资源创建并返回新资源,要么PUT到特定标识的资源,如/todo/<id>
,用于创建和/或更新
答案 2 :(得分:2)
小心点。为此你需要@GET(不是@PUT)。
答案 3 :(得分:2)
另一种方法是获取UriInfo而不是所有的QueryParam
然后,您将能够根据代码中的需要获取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 ;
}
答案 4 :(得分:0)
你可以尝试这个...把参数作为:
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) {
}
}