我正在使用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”的值保持为空,而不是更改为“字符串”。有人可以帮助我指出我在这里犯的错误吗?
资源和数据类期望参数作为查询参数,但是您将其发送到正文中。您应该改为将它们作为查询参数发送(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)