gpt4 book ai didi

java - 如何在同一网络服务中获取@PathParam和请求正文?

转载 作者:行者123 更新时间:2023-11-30 08:05:50 24 4
gpt4 key购买 nike

我正在调用服务并希望映射路径参数和请求正文中的数据。 Web 服务调用是 POST 类型。这里的问题是如果我使用 @Form 那么我只得到路径参数这是场景。

 Case1 Url :- Response updateDepartment(@Form @Valid Department departmentObject)

我获取的路径参数值为departmentNumber、departmentSNumber 和departmentName但没有获取包含 addRequest[{ }] 和 removeRequest[{ }] 的请求正文

如果我只使用@Valid 那么

 Case 2 Url :- Response updateDepartment(@Valid Department departmentObject)

在这种情况下,我得到 addRequest[{ }] 和 removeRequest[{ }] 值。但对象现在缺失了departmentNumber、departmentSNumber 和departmentName

部门.java

public class Department
{

@PathParam(DEPTNUMBER_PARAM)
private String deptNumber;

@PathParam(DEPT_S_PARAM)
private String deptSNumber;


@PathParam(DEPARTMENT_NAME)
private String departmentName;

private List<String> addRole;

private List<String> removeRole;

}

如何映射 @PathParam 形式的值以及请求正文值。这是电话

http://localhost:8080/myweb/departments/1234/4321/finance
{
"addRole": [
101,
181
],
"removeRole": [
42,
12
]
}

最佳答案

你为什么不使用这个:

Response updateDepartment(@Valid Department departmentObject, @PathParam("departmentNumber") String departmentNumber....)

你想要的它不会起作用。我会尽力解释。首先,我认为您使用的是 Resteasy 而不是 JAX-RS 引用,对吗?在 RestEasy 的 @Form 注释中它说:

This can be used as a value object for incoming/outgoing request/responses. You can re-use @*Param annotations on fields/methods of the parameter to unmarshall from the request or marshall to the response depending if you're using server-side JAX-RS or the Resteasy client framework

在您的情况下,您在参数的字段上使用@PathParam,这就是填充的原因。

当您不使用 @Form 时,无论您为参数指定什么类型,它都会尝试与请求正文匹配,在您的情况下,请求正文仅包含两个数组,而不包含 PathParam。它不会查看路径参数中的任何其他内容,从而忽略您的注释。

关于java - 如何在同一网络服务中获取@PathParam和请求正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31135083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com