React中通过API请求重发OTP遇问题,如何正确发送请求体?
问题解答
是否需要发送请求体?
HTTP规范中,GET请求的设计目的是获取资源,标准不支持携带请求体,绝大多数后端框架也不会解析GET请求的请求体。你当前用GET方式传递data的做法是错误的,这也是收到错误响应的核心原因。
至于是否需要传递参数,取决于目标API的要求,但绝对不能用GET请求携带请求体传递参数。
正确实现方案
根据API文档的不同要求,有两种正确的实现方式:
方案1:改用POST请求(若API要求用POST传参)
如果API文档规定用POST请求并通过请求体传递参数,将axios.get改为axios.post即可,POST的第二个参数就是请求体:
function resendOtp() { const data = { email: email, mobile: mobile, source: email, }; axios .post(`${API_URL}/user/otpResend`, data) .then((response) => { console.log(response.data); }) .catch((err) => { console.error(err); }); }
方案2:用GET请求传递查询参数(若API要求用GET)
如果API文档规定用GET请求,需要将参数放到URL的查询字符串中。可以使用axios的params配置项,它会自动把参数拼接到URL末尾:
function resendOtp() { const params = { email: email, mobile: mobile, source: email, }; axios .get(`${API_URL}/user/otpResend`, { params }) .then((response) => { console.log(response.data); }) .catch((err) => { console.error(err); }); }
关键提示
务必对照API文档确认:
- 请求方法是POST还是GET
- 参数的传递方式是请求体还是URL查询参数
内容的提问来源于stack exchange,提问作者Cirrus
相关产品推荐
相关产品推荐

