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

标签 java web-services resteasy

我正在调用服务并希望映射路径参数和请求正文中的数据。 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/

相关文章:

java - 私有(private)字段是否被子类继承?

java - 如何使用 flexjson 优雅地反序列化这个 JSON

Java 8 Lambda Map<Integer,List<Object> 为每个创建一个新对象并将此新对象添加到列表中

java - Android MKDirs() 不适合我 - 不是外部存储

java - Apache Axis 响应无类型

java - RESTEasy 的 SpringContextLoaderListener 不扫描 @Path

c# - 在 C# 中引用多个 Web 服务时解决类型歧义

php - 在 PHP 中创建单例 Web 服务的最佳方法是什么?

java - JBoss RESTEasy 无法扫描 WEB-INF 中的 JAX-RS 注释

java - 如何全局忽略带有 restesy 响应的空字段?