【前端】前后端的网络通信基础操作(原生ajax, axios, fetch)

概述

前后端网络请求工具

  • 原生ajax
  • fetch api
  • axios

GET和POST请求

get只能发纯文本

post可以发不同类型的数据,要设置请求头,需要告诉服务器一些额外信息

测试服务器地址

有一些公共的测试 API 可供学习和测试用途。这些 API 允许你发送 HTTP 请求(GET、POST 等),并从服务器获取响应。以下是一些常用的公共测试 API:

  1. JSONPlaceholder:
  2. ReqRes:

原生ajax

前端页面代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src="ajax_get.js"></script>
</body>
</html>

GET

javascript 复制代码
//原生ajax
const xhr = new XMLHttpRequest();
//xhr.open('GET', 'http://wuyou.com/common/get');
xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1')
xhr.send();
xhr.onreadystatechange = function(){
    if(xhr.readyState == XMLHttpRequest.DONE && xhr.status === 200){
        console.log(JSON.parse(xhr.responseText));
    }
}

返回结果

POST

javascript 复制代码
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://jsonplaceholder.typicode.com/posts');
xhr.setRequestHeader('Content-Type', 'application/json'); // 修改 Content-Type
xhr.send(JSON.stringify({
    title: 'foo',
    body: 'bar',
    userId: 1
}));

xhr.onreadystatechange = function() {
    if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 201) {
        console.log(xhr.responseText); // 不解析 JSON,直接输出响应文本
    }
};

返回结果

Axios

前端页面代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src="axios.min.js"></script>
<script src = 'axiosjs.js'></script>
</body>
</html>

直接传输

最简单的axios使用方式,get函数中填写请求的url

javascript 复制代码
//用axios来get一个请求
axios.get('https://jsonplaceholder.typicode.com/posts/1')
    .then(response => {
        console.log('GET Response:', response.data);
    })
    .catch(error => {
        console.error('GET Error:', error);
    });

返回结果

异步传输

用异步的方式传输,在axios中配置地址,请求/响应拦截器

javascript 复制代码
//异步请求处理
//异步发送get请求
(async () => {
    try {
        const ins = axios.create({
            baseURL: 'https://jsonplaceholder.typicode.com',
        });

        // 请求拦截器
        ins.interceptors.request.use((config) => {
            console.log('发送了请求');
            return config;
        });

        // 响应拦截器
        ins.interceptors.response.use(
            (response) => {
                // 在这里可以对响应数据进行处理
                return response.data;
            },
            (error) => {
                // 在这里处理响应错误
                return Promise.reject(error);
            }
        );

        const res = await ins.get('/posts/1');

        const res2 = await ins.post('/posts', {
            title: 'foo',
            body: 'bar',
            userId: 1,
        });

        console.log('GET 的结果:', res);
        console.log('POST 的结果:', res2);
    } catch (error) {
        console.error('发生错误:', error);
    }
})();

返回结果

Fetch

前端页面代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src = 'fetch_get.js'></script>
</body>
</html>

GET请求

javascript 复制代码
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(res => {
    if(res.ok){
        return res.json()
    }
})
.then(data =>{
    console.log(data)
    }

).catch(error =>{
    console.error(error)
})

结果:

POST请求

在参数处需要传入一些配置项

javascript 复制代码
//post在参数的地方需要传入一些配置项

const postData = {
    title: 'foo',
    body: 'bar',
    userId: 1
};
console.log("test")
fetch('https://jsonplaceholder.typicode.com/posts', {
    method: 'POST',
    headers:{
        'Content-Type': 'application/json'
    },
    body:JSON.stringify({
        postData
    })
    }
).then(res =>{
    if(res.ok){
        return res.json()
    }
})
.then(data =>{
    console.log(data)
    }
)

结果

相关推荐
杨超凡13 分钟前
豆包收费了?我特么自己用“意念”搓了一个!
javascript
Java后端的Ai之路16 分钟前
模型调好了怎么给老板看?用这玩意儿5分钟出Demo,连前端都不用学:Gradio 6全栈实战指南
前端·机器学习·gradio
木斯佳18 分钟前
前端八股文面经大全:中科星图前端日常实习(2026-04-29)·面经深度解析
前端
heRs BART33 分钟前
spring-boot-starter和spring-boot-starter-web的关联
前端
龙猫里的小梅啊34 分钟前
CSS(七)CSS列表控制
前端·css
浩冉学编程35 分钟前
微信小程序中基于java后端实现官方的文本内容安全识别msgSecCheck
java·前端·安全·微信小程序·小程序·微信公众平台·内容安全审核
李李李勃谦1 小时前
鸿蒙PC配色方案工具:取色、配色生成与 CSS 导出
前端·css·华为·harmonyos
threelab1 小时前
Three.js 咖啡杯烟雾效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
Jul1en_1 小时前
Claude 迁移 Codex 工作流迁移与更新
java·服务器·前端·后端·ai编程
Heo1 小时前
14_React 中的更新队列 updateQueue
前端·javascript·面试