使用多个参数的 RESTFUL Web 服务

问题描述

我有一个包含 getter 和 setter 的类,其中包含值,例如:

String value1;
String value2;
double result;

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

@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;

    }



相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...