将数据传递到 Axios 中的服务
问题:您想要将“_boundary”附加到Axios API 调用,但在 Axios 服务中无法访问数据。
解决方案: Axios 自动处理某些请求正文格式的内容类型,包括 FormData。传递 FormData 实例作为 data 参数将设置适当的 Content-Type 和 mime 边界,无需手动配置。
详细说明:
自动内容类型处理:
发送 FormData 实例时,运行时会自动将 Content-Type 设置为“multipart/form-data”并包含正确的 mime 边界标记。此行为可确保数据正确序列化并发送到服务器。
示例:
以下是使用 Axios 发送 FormData 实例的示例:
<code class="javascript">const form = new FormData(); // Attach files and other fields to the formData instance form.append('file', fileInput.files[0]); form.append('foo', 'foo'); axios.post(url, form);</code>
处理自定义内容类型:
如果您想以特定格式(例如text/xml、 application/json)。
示例:
<code class="javascript">const data = JSON.stringify({ foo: 'foo', bar: 'bar' }); axios.post(url, data, { headers: { 'content-type': 'application/json' }, });</code>
避免 Axios v0.27.1 和 v1.0.0 :
这些 Axios 版本在处理 FormData 方面存在已知问题。建议使用 Fetch API、got(对于 Node.js)或 ky(对于浏览器)等替代方案。
Node.js 注意事项:
何时在 Node.js 后端使用 Axios,它不会从 FormData 实例推断 Content-Type 标头。要解决这个问题,您可以使用请求拦截器或手动合并标头。
jQuery $.ajax() 方法:
默认情况下,$.ajax()将有效负载发送为“application/x-www-form-urlencoded”并使用 jQuery.param() 序列化 JavaScript 数据。要允许浏览器自动设置 Content-Type,请使用以下选项:
<code class="javascript">$.ajax({ url, method: 'POST', data: body, contentType: false, // Let the browser figure out the content type processData: false, // Don't attempt to serialize data });</code>
以上是如何将数据传递到 Axios 中的服务并确保设置正确的内容类型和边界?的详细内容。更多信息请关注PHP中文网其他相关文章!