RESTFUL 使用多个参数的 Web 服务

RESTFUL Web Service using multiple arguments

我有一个 class 和我的 getter 和 setter,包含值,例如:

String value1;
String value2;
double result;

我想使用这两个字符串来确定结果应该发生什么。如果 value1 等于“一”且 value2 =“二”,则结果应乘以预定义值。

@GET
@Path("/{value1}/{value2}/{result}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public double getResult() {
    Something mon = new Something();
    mon.setOne(22.2);
    mon.setTwo(11.1);
    if("/{value1}".equals("one")){
       //multiply by mon.setOne;
    }
    return 0;
   
}

如何读取和访问路径中定义的值?

如果你想接收值作为路径参数(如/foo/one/two/something),你可以使用@PathParam:

@GET
@Path("/foo/{value1}/{value2}/{result}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public double getResult(@PathParam("value1") String value1, 
                        @PathParam("value2") String value2,
                        @PathParam("result") String result) {
   ...
}

但是,根据您打算执行的操作,您可以考虑使用 查询参数 (例如 /foo?value1=one&value2=two&result=something)和 @QueryParam:

@GET
@Path("/foo")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public double getResult(@QueryParam("value1") String value1, 
                        @QueryParam("value2") String value2,
                        @QueryParam("result") String result) {
   ...
}

您可能需要查看此 question 的答案,以详细了解何时使用它们。

首先你应该使用一个唯一的 API 名称我使用 /GetResult 然后输入参数。

@GET
@Path("/GetResult/{value1}/{value2}/{result}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public double getResult(
            @PathParam(value = "value1") String value1, 
            @PathParam(value = "value2") String value2,
            @PathParam(value = "result") String result) {

        if (value1.equals("one")) {

        }

        return 0;

    }