我正在尝试进行参数化的获取(也称为搜索)。我不确定为什么这不起作用。我们使用最新的jersey依赖项(1.14),到目前为止,所有REST接口都运行良好。
简单REST:
@Path("/some/path")
@Component
public class SomeRest {
@GET
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces({ MediaType.APPLICATION_JSON })
public Response getAll(MultivaluedMap<String, String> queryParams) {
// extract params, do search, return response as JSON
// (Using ObjectMapper.writeValue() to convert object to JSON String)
}
}
我认为方法的工作原理并不重要,因为错误明确指出由于某些不支持的媒体类型(当我在浏览器中输入我的路径时),它根本无法进入:
HTTP Status 415 - Unsupported Media Type
输出结果为:
SEVERE: A message body reader for Java class javax.ws.rs.core.MultivaluedMap, and Java type javax.ws.rs.core.MultivaluedMap<java.lang.String, java.lang.String>, and MIME media type application/octet-stream was not found.
The registered message body readers compatible with the MIME media type are:
....
有人有想法吗? 谢谢!
编辑:
我的目标是使用GET资源的查询参数来实现搜索。因此,当我调用/some/path
时,我会得到所有结果,但如果我调用some/path?limit=10&offset=10
,我将获得第二组10个结果。我可以使用查询参数解决该特定问题,但我还希望能够在同一参数映射中定义类似name=foo的where子句参数。而且这些参数应该是动态的,因为我想创建一个通用的getAll方法,可以在GET调用上接受任何参数映射。
所以我的问题是:如何实现动态查询参数?