gpt4 book ai didi

java - @FormDataParam 和@FormParam 有什么区别

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:12 27 4
gpt4 key购买 nike

@FormDataParam@FormParam 有什么区别?

我在一个方法中使用了多个 @FormDataParam 但它抛出了媒体不支持的类型错误。但是当我使用 @FormParam 时,我得到了值。

所以,我需要知道它们两者之间有什么区别?

最佳答案

  • @FormDataParam 应该与多部分类型数据一起使用(即 multipart/form-dataMediaType.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-urlencodedMediaType.APPLICATION_FORM_URLENCODED), 原始形式看起来像

      param1=value1&param2=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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com