全面解析多端请求API(含原生请求、第三方请求等)

<!--   本篇文章仅代表 个人观点   -->

目录

介绍

原生请求方式

XMLHttpRequest

Fetch

 第三方请求方式

Axios

WebSocket

Server-Sent Events (SSE)

API测试软件

国外热门API测试软件

国内热门API测试软件

跨域问题

CORS(后端允许跨域)

 JSONP

 代理服务器


介绍

在现代前端开发中,请求API是与后端交互的核心操作之一。

随着技术的发展,出现了多种请求API的方式,每种方式都有其特点和适用场景。

本文将详细介绍常见的请求方式,包括原生的 XMLHttpRequestFetch,以及流行的第三方库 Axios等,同时探讨跨域问题的解决方案。


原生请求方式

XMLHttpRequest

XMLHttpRequest 是最早用于前端发起网络请求的API,支持异步请求,并可以通过回调函数处理响应。虽然它已经被更现代的API取代,但在一些旧的浏览器或特定场景中仍然有用。

const xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.wmcode.com/data', true);
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        console.log(xhr.responseText);
    }
};
xhr.send();

Fetch

Fetch 是一个现代、基于Promise的API,用于网络请求。它支持发送和接收各种类型的数据(如JSON、文本等),语法简洁且易于使用。

fetch('https://api.wmcode.com/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));

 第三方请求方式

Axios

Axios 是一个基于Promise的HTTP客户端,适用于浏览器和Node.js环境。它提供了许多便捷的功能,如拦截器、自动JSON数据转换、错误处理等。

axios.get('https://api.wmcode.com/data')
    .then(response => console.log(response.data))
    .catch(error => console.error('Error:', error));

WebSocket

WebSocket提供全双工通信渠道,允许服务器与客户端之间的实时、双向通信。

const socket = new WebSocket('wss://api.wmcode.com/socket');
socket.onmessage = function (event) {
    console.log('Message from server:', event.data);
};

Server-Sent Events (SSE)

SSE允许服务器主动向客户端发送更新,基于HTTP协议,但只能单向通信。

const eventSource = new EventSource('https://api.wmcode.com/events');
eventSource.onmessage = function (event) {
    console.log('New event:', event.data);
};

API测试软件

国外热门API测试软件

软件名称特点支持系统是否免费是否开源
Postman功能强大,支持多种认证方式,适用于RESTful、SOAP等多种API类型的测试,协作功能出色,团队成员可以共享集合和环境。Windows, macOS, Linux免费版+付费版
Insomnia界面简洁,易于上手,支持HTTP、REST、GraphQL、gRPC、SOAP或WebSockets请求,拥有多个开源插件,但免费版不支持团队协作和版本控制。Windows, macOS, Linux免费版+付费版
Paw界面美观,支持JSON Schema,可以导入生成完全兼容的Swagger,但仅限Mac系统。macOS
SoapUI功能强大,专注于SOAP和REST API测试,提供功能测试、负载测试、安全测试等多种测试功能。Windows, macOS, Linux免费版+付费版
Swagger自动生成API文档和测试代码,减少编写文档和测试代码的工作量,支持多种语言和框架。浏览器
Katalon Studio综合性的测试自动化解决方案,支持Web、API、移动和桌面应用的测试。Windows, macOS, Linux免费版+付费版
Talend API TesterChrome浏览器插件,专注于测试REST API,适合轻量级解决方案。浏览器
ReadyAPI企业级API测试工具,支持REST、SOAP和GraphQL,提供高级功能,如数据驱动测试、分布式测试和API监控。Windows, macOS, Linux付费版
Hoppscotch免费、开源、轻量级的API工具,支持多种HTTP请求方法,具备环境变量、历史记录、导入/导出等功能,支持跨平台使用。浏览器、桌面应用程序(Windows, macOS, Linux)

国内热门API测试软件

软件名称特点支持系统是否免费是否开源
Apifox一站式API管理工具,集成API文档、调试、测试和Mock功能,支持团队协作、自动化测试和接口数据生成,界面友好,支持多种数据格式的导入。Windows, macOS, Linux免费
YApi开源的API管理平台,专为前后端分离项目设计,接口管理、文档生成、权限控制和团队协作功能强大。无限制
Rap2基于Rap项目的升级版,提供API管理和文档生成,简单易用,适合中小型项目的API管理。无限制
NEI (网易云)由网易云提供的API管理工具,支持前后端协作,自动化文档生成、接口Mock和数据模拟。无限制免费
ShowDoc专注于API文档和团队协作的工具,简洁易用,支持多人协作和权限管理。无限制免费

跨域问题

有了同源策略,厉害的请求都会被拦截!

CORS(后端允许跨域)

// Node.js/Express 示例
const cors = require('cors');
app.use(cors());

 JSONP

function callback(data) {
    console.log(data);
}
const script = document.createElement('script');
script.src = 'https://api.wmcode.com/data?callback=callback';
document.head.appendChild(script);

 代理服务器

// Webpack Dev Server 示例
module.exports = {
    devServer: {
        proxy: {
            '/api': {
                target: 'https://api.wmcode.com',
                changeOrigin: true,
                pathRewrite: { '^/api': '' }
            }
        }
    }
};
解决跨域相关问题
2025新时代 | 分析并解决企业跨域问题-优快云博客

感谢阅读 | 更多内容尽在公棕号 wmcode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小Mie不吃饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值