我是第一次使用 Jersey。
我只是希望我的服务接受 APPLICATION_FORM_URLENCODED
和 MULTIPART_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
提交时,它下降了:
当我删除 @FormParam
注释时,它无法接受 x-www-url-form-urlencoded
提交,并显示:
这是我的问题:
1。有什么办法让他们一起工作吗?
2。是否有类似 @JsonParam
的 Param 类型接受 application/json
的请求表单类型?
最佳答案
请将 Consumer 用作 @Consumes({MediaType.MULTIPART_FORM_DATA})
。
这样端点就可以接受多部分对象和表单数据,如下所示
@FormDataParam("file") InputStream fileInputStream,
@FormDataParam("email") String email)
请从 postman 测试它,因为表单数据和文件应输入"file",电子邮件应输入“文本”
关于java - Jersey 2 : Consumes APPLICATION_FORM_URLENCODED and MULTIPART_FORM_DATA together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48593543/