如何使用输入参数创建Restful Web服务?

SSG*_*SSG 20 java rest web-services jax-rs

我正在创建宁静的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;
    }
Run Code Online (Sandbox Code Playgroud)

我可以使用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;
        }
Run Code Online (Sandbox Code Playgroud)

在基于肥皂的Web服务的情况下,我会像这样调用它

HTTP://本地主机:8088/JerseyJAXB /休息/待办事项X = ABC&Y = PQR?

但是我想知道如何使用rest来调用它,并且我可以传递参数,就像我在上面的例子中使用rest和jersey时所做的那样.

per*_*ssf 39

您可以.尝试这样的事情:

@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;
}
Run Code Online (Sandbox Code Playgroud)

然后使用此URL呼叫您的服务;
HTTP://本地主机:8088/JerseyJAXB/REST/TODO /摘要/描述


dbr*_*aux 10

如果需要查询参数,请使用@QueryParam.

public Todo getXML(@QueryParam("summary") String x, 
                   @QueryParam("description") String y)
Run Code Online (Sandbox Code Playgroud)

但是你将无法从普通的网络浏览器(今天)发送PUT.如果直接输入URL,则为GET.

从哲学上讲,这看起来应该是一个POST.在REST中,您通常要么POST到公共资源,要么/todo该资源创建并返回新资源,要么PUT到特定标识的资源,例如/todo/<id>,用于创建和/或更新.