有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用参数调用RESTful Web服务

我有一个简单的RESTful web服务,打印“Hello World!” 我正在使用NetBeans,代码如下所示:

package resource;

import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;


@Path("simple")
public class SimpleResource {

    @Context
    private UriInfo context;

    /** Creates a new instance of SimpleResource */
    public SimpleResource() {
    }

    @GET
    @Produces("application/xml")
    public String getXml() {
        //TODO return proper representation object
        return "<greeting>Hello World !</greeting>";
    }

    @PUT
    @Consumes("application/xml")
    public void putXml(String content) {
    }
}

我从这个URL调用这个web服务:http://localhost:8080/WebService/resources/simple。 现在,我想向这个web服务发送一个参数,然后在“Hello world”消息之后打印这个参数

我们怎么能做到呢

谢谢


共 (3) 个答案

  1. # 1 楼答案

    接受URl中参数的web服务的示例代码如下所示:

    @GET
    @Path("/search")
    public String getUserDetailsFromAddress(
                  @QueryParam("name") String name) {
      return "Hello"+name;
    }
    

    URL如下所示:

    http://localhost:8080/searchapp/mysearch/search?name=Tom
    
  2. # 2 楼答案

    REST中处理参数的两种主要方法是解析路径和提取查询部分

    路径参数

    它们处理这种情况-/foo/{fooID},其中{fooID}是一个模板,将被所需的参数替换:

    @GET
    @Produces("text/plain")
    @Path("/foo/{fooID}")
    public String getFoo(@PathParam("fooID") String id) {
        // ...
    }
    

    这些对于您可以考虑描述资源的参数非常有用。

    查询参数

    这些程序处理这种情况-/?foo=ID,就像处理传统表单一样:

    @GET
    @Produces("text/plain")
    @Path("/")
    public String getFoo(@QueryParam("foo") String id) {
        // ...
    }
    

    这些对于你认为参数描述的是资源的附属而不是资源本身来说是很好的。@FormParam注释非常相似,只是它用于处理发布的表单,而不是GET样式参数

    其他类型的参数

    JAX-RS规范还支持其他类型的参数处理(矩阵参数、头参数、cookie参数),它们对程序员的工作方式大致相同,但在使用上更少见或更专业。一个合理的开始探索细节的地方是JAX-RS javadoc本身,因为它有有用的链接

  3. # 3 楼答案

    尝试添加如下路径注释:

    @javax.ws.rs.Path(“/bookstore/books/{bookId}”)