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

2022-09-02 05:24:49

我正在创建宁静的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 时,我是否可以像在上面的例子中所做的那样传递参数。


答案 1

您可以。试试下面这样:

@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


答案 2

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

public Todo getXML(@QueryParam("summary") String x, 
                   @QueryParam("description") String y)

但是您将无法从普通Web浏览器发送PUT(今天)。如果您直接输入URL,它将是GET。

从哲学上讲,这看起来应该是一个POST。在 REST 中,通常将 POST POST 到公共资源,在该资源中创建并返回新资源,或者将 POST POST 到专门标识的资源(如 )以进行创建和/或更新。/todo/todo/<id>