如何发出一个type为application/json的post请求?方案合集
发布于 作者:苏南大叔 来源:程序如此灵动~

有一种表单类型叫做application/json
,它在网络编程的时候,偶尔是可以见到的。但是,却不是标准的表单类型!就是代码里面存在,实际上却不存在的application/json
的请求。那么,如何发出这样的请求呢?本文里面做个简单的探讨。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:nodejs@20.18.0
,chrome@131.0.6778.140
,express@4.21.2
。接口返回是json
字符串,这个已经是业界标准。但是,接口【发送】是json
格式,这个就相对不常见了。
测试接口
这里使用express
做个非常简单的测试,主要功能就是:查看服务端接收到的请求的Content-Type
类型。
测试成功的标准:返回的check
字段值是发送的master
字段值。

如果这个接口返回400
错误,请检查发送的数据是不是字符串,直接发送object
是会报错的。
常规form失败
最常规的form
的enctype
属性,设置为application/json
,这并不能生效,浏览器会强制修改为application/x-www-form-urlencoded
。参考文章:

浏览器端 jquery/zepto请求
使用老牌选手jquery
出马,可以修改请求头的类型。
或者:

axios请求【推荐】
新兴贵族axios
请求,代码如下:

浏览器环境下,请自行加载axios.js
:
纯node
环境下,请自行安装axios
:
看起来,这个axios
比jquery
发出请求,确实有先进的地方。比如:
可以直接修改headers
,返回值直接转为json
对象,发送的数据可以直接是json
对象,而不是json
字符串。
fetch请求
浏览器原生支持的post
请求,或者纯node
环境下(目前似乎是直接支持fetch
了),都是可以运行的。

参考文章:
结语
总体上来看,各个版本的代码,都差不多。axios
的版本,相对更智能一些。


