java - Jersey 2 : Consumes APPLICATION_FORM_URLENCODED and MULTIPART_FORM_DATA together

标签 java forms rest jakarta-ee jersey

我是第一次使用 Jersey。

我只是希望我的服务接受 APPLICATION_FORM_URLENCODEDMULTIPART_FORM_DATA post 表单,就像 Django 或 php 中的那样。

更好的是,我希望 APPLICATION_JSON 也能工作。

所以我在我的 UserResource 类中尝试了下面的代码:

@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED, MediaType.APPLICATION_JSON, MediaType.MULTIPART_FORM_DATA})
@Produces(MediaType.APPLICATION_JSON)
public User createUser(
        @FormDataParam("username") @FormParam("username") String username,
        @FormDataParam("password") @FormParam("password") String password,
        @FormDataParam("mobile") @FormParam("mobile") String mobile,
        @FormDataParam("email") @FormParam("email") String email) {
    User user = new User();
    user.setUsername(username);
    user.setMobile(mobile);
    user.setEmail(email);
    user.setPlainPassword(password);
    userDao.save(user);
    return user;
}

然后我成功使用x-www-url-form-urlencoded提交,但是当我使用multipart/formdata提交时,它下降了:

enter image description here

当我删除 @FormParam 注释时,它无法接受 x-www-url-form-urlencoded 提交,并显示:

enter image description here

<小时/>

这是我的问题:

1。有什么办法让他们一起工作吗?

2。是否有类似 @JsonParam 的 Param 类型接受 application/json 的请求表单类型?

最佳答案

请将 Consumer 用作 @Consumes({MediaType.MULTIPART_FORM_DATA})。 这样端点就可以接受多部分对象和表单数据,如下所示

@FormDataParam("file") InputStream fileInputStream,
@FormDataParam("email") String email)

请从 postman 测试它,因为表单数据和文件应输入"file",电子邮件应输入“文本”

enter image description here

关于java - Jersey 2 : Consumes APPLICATION_FORM_URLENCODED and MULTIPART_FORM_DATA together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48593543/

相关文章:

c# - 如何在启动时将表单加载更改为其他表单?

java - 传递自定义类型查询参数

c# - 将多个参数传递给 DELETE 请求 c# web API

c# - WCF中的*是什么意思

java - 如何在 Java 中创建唯一 ID?

java - 为什么我的代码运行在主线程上?

java - 如何使用 REST Assured 自动获取 Bearer Token

javascript - 在 .click() 函数中获取 .change() 函数的输出

javascript - 使用纯 JavaScript 克隆字段集并更改 ID?

java - 为什么有人会像这样构造一个 while 循环?