配置Axios为每个项目配置一次validateStatus函数?

92dk7w1h  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(85)

我使用以下代码来防止axios在响应不在200范围内时返回错误:
这就是我现在所拥有的:

import axios from "axios";

function doSomething() {
   var options = { headers: { "Content-Type" : "application/json" }, validateStatus: () => true };
   var response = await axios.post(url, form, options);
}

function doSomethingElse() {
   var options = { headers: { "Content-Type" : "application/json" }, validateStatus: () => true };
   var response = await axios.post(url, form, options);
}

字符串
这就是我想要的:

import axios from "axios";

var options = { headers: { "Content-Type" : "application/json" }, validateStatus: () => true };
axios.use(options);

function doSomething() {
   var response = await axios.post(url, form);
}

function doSomethingElse() {
   var options = { headers: { "Content-Type" : "application/json" }, validateStatus: () => true };
   var response = await axios.post(url, form, options);
}


目前我在每次调用时都传入这个对象。我想设置一次这个首选项。

fjnneemd

fjnneemd1#

典型的方法是使用您喜欢的默认值设置create an Axios instance
例如

// http.js
import axios from 'axios';

const instance = axios.create({
  validateStatus: () => true,
});

export default instance;

字符串
create()方法接受与axios()相同的所有选项。
然后,您的消费代码可以直接使用此模块而不是Axios

import axios from './http';

// ...

axios.post(url, form);


仅供参考,几乎没有理由设置全局content-type头。Axios有许多错误,但根据请求体数据设置适当的类型头不是其中之一。
请参阅this answer以更深入地了解何时应该和不应该手动设置content-type头。

相关问题