- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
@FormDataParam
和@FormParam
有什么区别?
我在一个方法中使用了多个 @FormDataParam
但它抛出了媒体不支持的类型错误。但是当我使用 @FormParam
时,我得到了值。
所以,我需要知道它们两者之间有什么区别?
最佳答案
@FormDataParam
应该与多部分类型数据一起使用(即 multipart/form-data
或 MediaType.MULTIPART_FORM_DATA
) ,它的原始形式看起来像
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
Multipart 主要用于发送二进制数据,如非文本文件,或随文件一起发送任意数据、元数据或相关数据。
@FormParam
用于 url 编码的请求参数(即 application/x-www-form-urlencoded
或 MediaType.APPLICATION_FORM_URLENCODED
), 原始形式看起来像
param1=value1¶m2=value2
这两种类型主要用于客户端表单。例如
<form method="POST" action="someUrl">
<input name="gender" type="text">
<input name="name" type="text">
</form>
上面的代码会将请求参数发送为 application/x-www-form-urlencoded
。它将以原始形式发送为
gender=male&name=peeskillet
在服务器端,我们可以为表单中的每个命名参数使用一个@FormParam
@FormParam("gender") String gender, @FormParam("name") String name
但是如果我们需要发送图片和参数,application/x-form-url-encoded
数据类型是不够的,因为它只处理文本。所以我们需要使用Multipart
<form method="POST" action="someUrl", enctype="multipart/form-data">
<input name="gender" type="text">
<input name="name" type="text">
<input name="avatar" type="file">
</form>
这里指定了 Multipart 类型,现在浏览器将发送类似这样的请求
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="gender"
Male
--AaB03x
Content-Disposition: form-data; name="name"
Peskillet
--AaB03x
Content-Disposition: form-data; name="avatar"; filename="image.png"
Content-Type: image/png
... binary content of image file ...
--AaB03x--
在服务器上,类似于上面的application/x-www-form-urlencoded
示例,对于每个Multipart参数(或更准确的字段),我们可以使用@FormDataParam
表示每个参数
@FormDataParam("gender") String gender,
@FormDataParam("name") String name,
@FormDataParam("avatar") InputStream avatar
另请参阅:
关于java - @FormDataParam 和@FormParam 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537611/
我有一个方法可以返回父记录的所有子记录(例如文档和行): public Datasource getSonsFromParent( @FormParam(value = "idparent") Lon
由于在此应用程序中动态创建 html 表单元素,因此元素的数量未知。如何使用@FormParam注解获取元素信息?例如,下面的代码获取两个表单元素的信息: @POST @Path("/
我的 html 中有以下内容 function myForm() { var url = 'rest/products/details/'; var fo
我将以下内容从浏览器传递到服务器 Status Code:204 No Content Request Method:POST Content-Type:application/x-www-form-
我正在使用最新版本的 Spring。我必须与A公司的第三方服务器集成。现在,A公司给了我这个代码: Path("/user") public class CallBacks { String
我正在使用 Indy10。我的服务器正在处理表单发布。 ARequestInfo.FormParams 正确包含未解析的表单参数。但是 ARequestInfo.Params.count 是 0。有没
我有 HTML 表单数据并被传递给 RESTful POST 方法。我注意到如果@FormParam 声明为 @POST public void commitProjects( @FormParam(
我正在为书籍和内容开发 Java“JAX-RS”Web 服务。将会有数百个类似的 URL ... https://api.example.com/v1.3/book1/chapter/1 https:
在 Java 中,我正在实现一个服务器,客户端可以在其中使用后查询传递一些数据(键值对)。我已经决定制作一个 REST 服务,并且我计划将 JAX-RS 与 Jetty 一起使用。 我之前不知道要发送
@FormDataParam 和@FormParam 有什么区别? 我在一个方法中使用了多个 @FormDataParam 但它抛出了媒体不支持的类型错误。但是当我使用 @FormParam 时,我得
谁能帮我解决这个问题。 我使用resteasy 和wildfly 8.1.0 创建了一个Web 服务,但@FormParam 总是返回null。 用户服务.java Path("/user") @Pr
因此,我在 Felix 框架内使用 Amdatu 来创建支持 OSGi 的 JSON Rest 服务。 当我使用@GET时,我得到了预期的id值 @GET @Produces(MediaType.AP
我正在制作一个REST客户端,它接收一个POST,其中包含用作查询的过滤器的数据。我的问题是当客户向我发送 "%" 来搜索所有值时。 Jersey 向我发送以下错误 11:36:35,857 ERRO
我正在使用 Java 和 Jersey 1.16。 @FormParam 参数的名称区分大小写吗?我可以以某种方式强制它不区分大小写吗? (希望以某种全局性的方式)。 最佳答案 您可以过滤请求: pu
我正在开发一个服务器端应用程序(不是客户端)。我有一个列表操作,其中使用 @GET 并将参数作为 @QueryParam 传递。我应该使用@FormParam 吗?对开发客户端有帮助吗? 最佳答案 @
我正在尝试通过 POST 向 RestAssured 端点提交一些 JSON。 API 需要一个 key 列表。我需要发送的值是一个包含单个项目的列表。 理想的请求如下: Request method
如果我有类似的东西: @PUT @Path("/login") @Produces({"application/json", "text/plain"}) @Consumes("application
我正在使用 Resteasy 学习 Web 服务 我正在做一个简单的基本示例,使用 @FormParam 轻松休息。我的示例在请求方法为 POST 时有效但是当我将请求方法更改为 GET 时不起作用
客户: 我确实像这样在 angular2 中发帖: doSelectMessagesAttributesUrl2(pushRequest : PushRequest) { console.in
免责声明:我确实详尽地搜索了这个问题的答案,是的,我确实找到了另一个问题:https://stackoverflow.com/questions/10315728/how-to-send-parame
我是一名优秀的程序员,十分优秀!