1

我正在使用 kotlin 中的 ARest 框架设置一个由 GET、DELETE 和 POST 方法 API 组成的新服务。

我将输入包装在数据类中并将其传递给方法。在这种情况下,DELETE 和 POST 方法可以正常工作,但我遇到了 GET 方法的一些问题。

用于包装输入的数据类:

class GetRequest(@QueryParam("aaa") var aaa: String? = null,
                                        @QueryParam("bbb") var bbb: String? = null,
                                        @QueryParam("ccc") var ccc: UserDefinedType? = null)

型号定义:

@GET
@Path("getStatus/")
@Produces(MediaType.APPLICATION_JSON)
fun getStatus(@NotNull @BeanParam getRequest: GetRequest) : GetResponse

我使用招摇来调用方法,请求正文:

{
  "aaa": "string",
  "bbb": "string",
  "ccc": "HEAD"
}

我的理解是,@BeanParam 会将查询中的相应参数注入到数据类中。但是从招摇我发现请求 URL 为 https://:8090/api/getStatus 并且找不到任何查询参数。因此,“aaa”的值保持为空,而不是更改为“字符串”。有人可以帮我指出我在这里犯的错误吗?

4

1 回答 1

0

资源和数据类期望参数作为查询参数,但您在正文中发送它们。您应该将它们作为查询参数发送 ( getStatus?aaa=string&bbb=string&ccc=HEAD),或者如果您想在正文中发送它(不建议将其用于GET请求),您必须修改您的代码,例如:

@GET
@Path("getStatus/")
@Produces(MediaType.APPLICATION_JSON)
fun getStatus(getRequest: GetRequest) : GetResponse

class GetRequest(var aaa: String? = null,
                 var bbb: String? = null,
                 var ccc: UserDefinedType? = null)
于 2020-05-08T11:21:50.700 回答