我被要求使用动态参数实现REST Web服务请求。我将用一个例子来解释: 现在我们的请求对象的字段是三个字符串,它们来自控制器并用于实现业务逻辑。明天,我们可能需要引入另一个参数,因此我建议使用Map实现请求对象,这样我们就可以在请求中管理3个以上的属性,而无需打开代码并重新部署服务。
现在,我的问题是,这可能吗?我认为是,但无论如何控制器不知道如何处理新插入的属性,或者它永远不会使用它!所以,恕我直言,这是一个无用的返工,因为无论如何我们将需要打开代码并重新部署.war。
提前感谢您的帮助。
P.S。 Web服务是GraphDB调用的包装器,如果它有帮助
答案 0 :(得分:1)
如果您使用 GET 方法,则可以获取值的参数名称,如下面的代码段所示:
@GET
public String get(@Context UriInfo ui) {
MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
MultivaluedMap<String, String> pathParams = ui.getPathParameters();
}
对于表单参数,可以执行以下操作:
@POST
@Consumes("application/x-www-form-urlencoded")
public void post(MultivaluedMap<String, String> formParams) {
// Store the message
}
通过使用多值地图,您可以将任何参数传递给Rest服务,并且您可以处理业务逻辑。