[使用ARest Framework在kotlin中使用请求正文创建GET方法

问题描述 投票:1回答: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”的值保持为空,而不是更改为“字符串”。有人可以帮助我指出我在这里犯的错误吗?

http kotlin get jax-rs path-parameter
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)
© www.soinside.com 2019 - 2024. All rights reserved.