java - 为什么@FormParam 不支持content=type=application/json?

标签 java rest postman

我已经使用 postman 测试了一个 Rest API,并且在测试选择原始选项时,它显示了 application/json header 内容类型不受支持的媒体,但仅适用于 url 编码形式。请指定如何将 @FormParam 用于 application/json 内容类型。提前致谢。

最佳答案

@FormParam 注释仅用于访问以通常使用 x-www-form-urlencoded 的正常形式传递的参数。如果您在请求正文中将数据作为 JSON 发送,您只需创建一个对应于包含 JSON 请求所有属性的请求正文的 POJO 类,并将其用作 REST 方法的参数。 JAX-RS 容器自动将请求的 JSON 主体反序列化为给定的对象。

例如,如果您的请求主体是这样的:

{
    "firstName" : "Foo",
    "lastName"  : "bar"
}

然后你可以定义一个 POJO 代表你的请求数据如下:

public class PersonRequest {
    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

并将您的 REST 端点定义为访问此数据:

@POST
@Path("/persons")
@Consumes("application/json")
public String savePerson(PersonRequest personRequestData) {
    // request data are deserialized into the personRequestDataas properties 
    System.out.println(personRequestData.getFirstName());

}

您不需要在 POJO 类上指定任何类型的注释。

关于java - 为什么@FormParam 不支持content=type=application/json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310530/

相关文章:

java - 何时在 lucene 中进行索引

powershell - 使用 Powershell 将视频上传到 Google Photos 时出现错误 3(适用于图片)

postman - 如何在 Postman 中使用 raw 上传文件(pdf)?

postman - postman 响应测试中的 OR 运算符

java - 如何删除数组列表的最后一个元素

mysql - Java、Tomcat、MySQL 组合的安装程序

rest - PATCH 与 PUT 更新法案

php - 无法使用 PHP 将视频上传到 Facebook 页面,但可以使用curl

java - android.view.InflateException : Binary XML file line #9: Error inflating class com. jjoe64.graphview.helper.GraphViewXML

java - RestEasy : org. codehaus.jackson.map.JsonMappingException : Can not deserialize instance of java. util.ArrayList out of START_OBJECT token(..)