Http 使用ARest框架在kotlin中创建带有请求体的GET方法
我正在使用kotlin中的ARest框架建立一个由GET、DELETE和POST方法API组成的新服务 我将输入包装在一个数据类中,并将其传递给方法。在这种情况下,DELETE-and-POST方法可以很好地工作,但我在GET方法中遇到了一些问题 用于包装输入的数据类:Http 使用ARest框架在kotlin中创建带有请求体的GET方法,http,kotlin,get,jax-rs,path-parameter,Http,Kotlin,Get,Jax Rs,Path Parameter,我正在使用kotlin中的ARest框架建立一个由GET、DELETE和POST方法API组成的新服务 我将输入包装在一个数据类中,并将其传递给方法。在这种情况下,DELETE-and-POST方法可以很好地工作,但我在GET方法中遇到了一些问题 用于包装输入的数据类: class GetRequest(@QueryParam("aaa") var aaa: String? = null, @QueryParam("
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将把查询中相应的参数注入到数据类中。但从swagger我发现请求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)
资源和数据类需要参数作为查询参数,但您可以在正文中发送它们。您应该改为将它们作为查询参数发送(
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)