JAX-RS @QueryParam
和@MatrixParam
有什么不同?从documents.The中,查询参数和矩阵参数都可以在特定条件下定位一个资源。那么用例的区别是什么呢?
ps:
Queryparam:
url ? key=value;
Matrixparam
url; key=value;
发布于 2012-04-17 11:35:37
@PathParam
和其他基于参数的批注@MatrixParam
、@HeaderParam
、@CookieParam
、@FormParam
遵循与@QueryParam
相同的规则。@MatrixParam
从网址路径段中提取信息。@HeaderParam
从HTTP头中提取信息。@CookieParam
从cookie相关的HTTP头中声明的cookie中提取信息。
示例(取自 ):
@Path("/books")
public class BookService {
@GET
@Path("{year}")
public Response getBooks(@PathParam("year") String year,
@MatrixParam("author") String author,
@MatrixParam("country") String country) {
return Response
.status(200)
.entity("getBooks is called, year : " + year
+ ", author : " + author + ", country : " + country)
.build();
}
}
请参阅以下URI模式和结果:
“/books/2012/”
调用,年份: 2012,作者: null,国家: null
getBooks被调用,年份: 2012,作者: andih,国家: null
名为getBooks,年份: 2012,作者: andih,国家:德国
名为getBooks,年份: 2012,作者: andih,国家:德国
要了解其中差异的解释,您可以查看URL matrix parameters vs. request parameters
发布于 2017-10-04 21:07:20
@MatrixParam
注解将应用于URL中的特定资源,而@QueryParam
将应用于整个请求URL。
以任何一家超市为例,如果你想要所有的水果都能满足多个条件,比如type=fruits,价格范围从300开始,列出匹配的10个水果,你可以去下面的API设计。
http://dev.brandstore.com/inventory/grocery;type=fruits/price;range=300/?limit=10
在上面的示例中,第一矩阵参数type=fruits
仅应用于杂货资源,相同的range=300
仅应用于价格资源,但查询分页参数limit=10
应用于整个请求limit=10
。是的,如果只使用查询参数,你最终会得到像"grocery_type“和"grocery_price”这样的参数,而且你会失去请求中参数的局部性所增加的清晰度。
https://stackoverflow.com/questions/10183875
复制相似问题