我有一个简单的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) {
}
}
我通过以下网址呼叫此网络服务:http://localhost:8080/WebService/resources/simple
。
现在,我想向此Web服务发送一个参数,然后在“Hello world”消息之后打印此参数。
我们怎么能这样做?
谢谢!
答案 0 :(得分:23)
在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
注释非常相似,除了用于处理POSTed表单而不是GET样式参数
JAX-RS规范支持其他类型的参数处理(矩阵参数,标题参数,cookie参数),它们与程序员的工作方式大致相同,但使用起来比较少见或更专业。开始探索细节的合理位置是JAX-RS javadoc本身,因为它具有有用的链接。
答案 1 :(得分:3)
接受URl参数的Web服务的示例代码如下所示:
@GET
@Path("/search")
public String getUserDetailsFromAddress(
@QueryParam("name") String name) {
return "Hello"+name;
}
,网址将如下:
http://localhost:8080/searchapp/mysearch/search?name=Tom
答案 2 :(得分:0)
尝试添加如下路径注释:
@javax.ws.rs.Path(“/bookstore/books/{bookId}”)