axios 请求 url 地址,判断网络地址是否存在

文章介绍了如何使用axios库发送GET请求到指定URL,通过检查响应状态码来判断URL是否可连接,包括处理超时、错误代码和重定向情况。

使用 axios 来判断一个 URL 地址是否可连接,通常涉及到发送一个 HTTP 请求到这个地址,并检查响应的状态码。如果请求成功,并且返回了 200 OK 状态码,那么通常可以认为这个地址是可连接的。

以下是一个简单的示例,使用 axios 来发送 GET 请求并判断 URL 是否可连接:

const axios = require('axios');  
  
async function isUrlReachable(url) {  
  try {  
    const response = await axios.get(url, {  
      timeout: 5000, // 设置请求超时时间,例如5秒  
      headers: {  
        // 你可以在这里添加自定义的请求头,例如:  
        // 'User-Agent': 'your-custom-user-agent'  
      },  
      // 如果只需要检查连接性,而不关心响应内容,可以设置 validateStatus  
      validateStatus: status => status >= 200 && status < 300,  
    });  
  
    // 如果请求成功,并且状态码在200-299之间,那么可以认为URL是可连接的  
    if (response.status >= 200 && response.status < 300) {  
      return true;  
    } else {  
      // 如果状态码不在200-299之间,但请求仍然成功(例如重定向),你可能需要根据你的需求来处理  
      console.log(`Unexpected status code: ${response.status}`);  
      return false;  
    }  
  } catch (error) {  
    // 如果请求失败(例如网络错误、超时、4xx/5xx状态码等),那么URL不可连接  
    if (axios.isCancel(error)) {  
      // 如果请求被取消(例如因为超时),可以在这里处理  
      console.log('Request canceled', error.message);  
    } else if (error.code) {  
      // 处理特定的错误代码,例如 'ECONNABORTED' 表示连接被中止  
      console.log(`Error code: ${error.code}`);  
    } else {  
      // 处理其他错误情况  
      console.error('Error', error.message);  
    }  
    return false;  
  }  
}  
  
// 使用示例  
const url = 'https://example.com';  
isUrlReachable(url).then(reachable => {  
  console.log(`URL is reachable: ${reachable}`);  
});

这个示例中的 isUrlReachable 函数会发送一个 GET 请求到指定的 URL,并返回一个 Promise。如果 URL 可连接,Promise 将解析为 true;否则,Promise 将解析为 false。同时,它会捕获并处理各种可能的错误情况。

在Vue项目中使用axios设置请求超时时间为五分钟(即300000毫秒),超时后终止请求,可通过以下步骤实现。 首先,若要统一设置所有请求的超时时间,可创建一个axios实例并设置`timeout`属性: ```javascript import axios from 'axios'; // 创建axios实例 const axiosInstance = axios.create({ timeout: 300000 // 设置超时时间为五分钟 }); export default axiosInstance; ``` 之后在项目里使用该实例发起请求,所有请求都会有五分钟的超时时间: ```javascript import axiosInstance from './yourAxiosInstance'; // 发起请求 axiosInstance.get('/your-api-url') .then(response => { // 处理响应数据 console.log(response.data); }) .catch(error => { if (axios.isCancel(error)) { console.log('请求被取消:', error.message); } else if (error.code === 'ECONNABORTED') { console.log('请求超时:', error.message); } else { console.log('请求出错:', error.message); } }); ``` 若要为单个请求设置超时时间,可在请求配置里指定`timeout`属性: ```javascript import axios from 'axios'; // 发起单个请求并设置超时时间 axios.get('/your-api-url', { timeout: 300000 // 设置超时时间为五分钟 }) .then(response => { // 处理响应数据 console.log(response.data); }) .catch(error => { if (axios.isCancel(error)) { console.log('请求被取消:', error.message); } else if (error.code === 'ECONNABORTED') { console.log('请求超时:', error.message); } else { console.log('请求出错:', error.message); } }); ``` 当请求超时时,axios会抛出一个错误,错误代码为`ECONNABORTED`,可据此判断请求是否超时并进行相应处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值