前后端对接

前端与后端的对接主要通过 接口 进行数据交互,具体流程和方式如下:


1. 明确需求与接口定义

  • 前后端协商:确定需要哪些接口、接口的功能、请求参数和返回格式。
  • 接口文档:使用工具(如 Swagger、Postman、Apifox)编写接口文档,明确以下内容:
    • 请求方法(GET、POST、PUT、DELETE 等)
    • 请求 URL
    • 请求参数(Query、Body、Header 等)
    • 返回数据格式(通常是 JSON)
    • 错误码和错误信息

2. 前后端开发

  • 前端:根据接口文档,使用 HTTP 请求库(如 fetchaxios)调用接口,获取数据并渲染页面。
  • 后端:根据接口文档实现接口逻辑,处理数据并返回结果。

3. 接口调用方式

前端通过 HTTP 请求与后端交互,常见的请求方式包括:

(1)GET 请求(获取数据)
  • 用于从后端获取数据。
  • 示例:
    fetch('https://api.example.com/data?id=123').then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    
(2)POST 请求(提交数据)
  • 用于向后端提交数据。
  • 示例:
    fetch('https://api.example.com/submit', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ name: 'John', age: 30 })
    }).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    
(3)PUT 请求(更新数据)
  • 用于更新后端的数据。
  • 示例:
    fetch('https://api.example.com/update/123', {method: 'PUT',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ name: 'Jane', age: 25 })
    }).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    
(4)DELETE 请求(删除数据)
  • 用于删除后端的数据。
  • 示例:
    fetch('https://api.example.com/delete/123', {method: 'DELETE'
    }).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    

4. 数据格式

  • 请求数据格式
    • application/json:JSON 格式(常用)。
    • multipart/form-data:文件上传。
    • application/x-www-form-urlencoded:表单提交。
  • 返回数据格式
    • 通常是 JSON 格式,例如:
      {"code": 200,"message": "Success","data": {"id": 1,"name": "John"}
      }
      

5. 跨域问题

  • 问题:前端和后端在不同域名或端口时,浏览器会阻止跨域请求。
  • 解决方案
    • CORS:后端设置 Access-Control-Allow-Origin 头部。
    • 代理服务器:前端通过代理服务器转发请求(如使用 webpack-dev-server 或 Nginx)。
    • JSONP:仅适用于 GET 请求(不推荐)。

6. 认证与授权

  • JWT(JSON Web Token)
    • 用户登录后,后端返回一个 Token,前端将其存储在本地(如 localStorage),并在每次请求时通过 Authorization 头部发送。
    • 示例:
      fetch('https://api.example.com/protected', {method: 'GET',headers: { 'Authorization': 'Bearer ' + token }
      });
      
  • OAuth 2.0:适用于第三方登录(如 Google、GitHub)。

7. 错误处理

  • HTTP 状态码
    • 200:请求成功。
    • 400:请求参数错误。
    • 401:未授权。
    • 404:资源未找到。
    • 500:服务器内部错误。
  • 自定义错误信息
    • 后端返回 JSON 格式的错误信息,例如:
      {"code": 400,"message": "Invalid input"
      }
      

8. 实时通信

  • WebSocket
    • 用于实时双向通信(如聊天室、实时通知)。
    • 示例:
      const socket = new WebSocket('wss://api.example.com/socket');
      socket.onmessage = function(event) {console.log('Received:', event.data);
      };
      socket.send('Hello Server');
      

9. 文件上传与下载

  • 文件上传
    • 使用 multipart/form-data 格式上传文件。
    • 示例:
      const formData = new FormData();
      formData.append('file', fileInput.files[0]);
      fetch('https://api.example.com/upload', {method: 'POST',body: formData
      });
      
  • 文件下载
    • 后端返回文件 URL,前端通过 <a> 标签或编程方式下载。

10. 联调与测试

  • 联调:前后端开发完成后,进行接口联调,确保数据交互正常。
  • 测试工具
    • Postman:手动测试接口。
    • Mock 数据:前端使用 Mock 数据模拟后端接口。
    • 自动化测试:使用 Jest、Cypress 等工具进行测试。

总结

前端与后端的对接主要依赖接口,通过 HTTP 请求(如 GET、POST)进行数据交互。关键点包括:

  1. 清晰的接口文档。
  2. 统一的请求和返回格式(通常是 JSON)。
  3. 处理跨域、认证、错误等问题。
  4. 使用工具进行联调和测试。

通过良好的协作和规范,可以确保前后端高效对接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/71737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简识MQ之Kafka、ActiveMQ、RabbitMQ、RocketMQ传递机制

四种主流消息队列&#xff08;Kafka、ActiveMQ、RabbitMQ、RocketMQ&#xff09;的生产者与消费者传递信息的机制说明&#xff0c;以及实际使用中的注意事项和示例&#xff1a; 1. Apache Kafka 传递机制 模型&#xff1a;基于 发布-订阅模型&#xff0c;生产者向 主题&#…

Websocket——心跳检测

1. 前言&#xff1a;为什么需要心跳机制&#xff1f; 在现代的实时网络应用中&#xff0c;保持客户端和服务端的连接稳定性是非常重要的。尤其是在长时间的网络连接中&#xff0c;存在一些异常情况&#xff0c;导致服务端无法及时感知到客户端的断开&#xff0c;可能造成不必要…

tailwindcss 前端 css 框架 无需写css 快速构建页面

版本&#xff1a;VUE3 TS 框架 vite 文章中使用tailwindcss 版本&#xff1a; ^3.4.17 简介&#xff1a; Tailwind CSS 一个CSS 框架&#xff0c;提供组件化的样式&#xff0c;直接在HTML 中编写样式&#xff0c;无需额外自定义CSS &#xff0c;快速&#xff01; 简洁&#…

MFC开发:如何创建第一个MFC应用程序

文章目录 一、概述二、MFC 的主要组件三、创建一个MFC窗口四、控件绑定消息函数 一、概述 MFC 是微软提供的一个 C 类库&#xff0c;用于简化 Windows 应用程序的开发。它封装了 Windows API&#xff0c;提供面向对象的接口&#xff0c;帮助开发者更高效地创建图形用户界面&am…

【Git版本控制器】第四弹——分支管理,合并冲突,--no-ff,git stash

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ 相关笔记&#xff1a; https://blog.csdn.net/djd…

AI助力小微企业技术开发规范化管理 | 杂谈

AI助力小微企业技术开发规范化管理 在小型技术研发企业中&#xff0c;人员配置紧张&#xff0c;往往一名员工需要承担多项职务和任务。例如&#xff0c;后端程序开发人员可能同时要负责需求调研、数据库设计、后端设计及开发&#xff0c;甚至在某些情况下还需兼任架构师的角色。…

SpringBoot+Vue+微信小程序的猫咖小程序平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当下这个高速发展的时代&#xff0c;网络科技正以令人惊叹的速度不断迭代更新。从 5G …

DeepSeek提效实操革命,全场景应用指南 AI提示词万能公式四步法以及对话技巧

欢迎来到涛涛聊AI DeepSeek系列文章 三块显示器如何摆放效率最高&#xff0c;让deepseek给深度思考下 阿里云免费试用 DeepSeek大模型。 限时送 100 万 tokens&#xff0c;快来抢先免费体验&#xff01;AI 助手不再出现系统繁忙阿里云免费试用 DeepSeek大模型。 限时送 100 万 …

智慧教室与无纸化同屏技术方案探讨与实现探究

引言 随着教育信息化的不断发展&#xff0c;智慧教室和无纸化同屏技术逐渐成为提升教学效率和质量的重要手段。大牛直播SDK凭借其强大的音视频处理能力和丰富的功能特性&#xff0c;在智慧教室和无纸化同屏领域积累了众多成功案例。本文将深入探讨基于大牛直播SDK的智慧教室、…

Linux MySQL 8.0.29 忽略表名大小写配置

Linux MySQL 8.0.29 忽略表名大小写配置 问题背景解决方案遇到的问题&#xff1a; 问题背景 突然发现有个大写的表报不存在。 在Windows上&#xff0c;MySQL是默认支持忽略大小写的。 这个时候你要查询一下是不是没有配置&#xff1a; SHOW VARIABLES LIKE lower_case_table…

【蓝桥杯单片机】第十三届省赛第二场

一、真题 二、模块构建 1.编写初始化函数(init.c) void Cls_Peripheral(void); 关闭led led对应的锁存器由Y4C控制关闭蜂鸣器和继电器 2.编写LED函数&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 将ucLed取反的值赋给P0 开启锁存器 关闭锁存…

【CMake 教程】常用函数与构建案例解析(三)

一、CMake 常用函数简析 1. 条件判断 if() / elseif() / else() 在 CMake 脚本中&#xff0c;条件判断是控制逻辑的重要工具。if() 支持多种比较语句&#xff0c;包括数值、字符串、布尔值和变量存在性等。在条件满足时执行特定逻辑代码&#xff0c;下面是典型语法&#xff1…

ASP.NET Core 8.0学习笔记(二十七)——数据迁移:Migrations深入与其他迁移命令

一、数据库架构的管理 1.EF Core提供两种方式来保持EF Core的模型与数据库保持同步。 (1)以数据库为准&#xff1a;反向工程&#xff08;Db First&#xff09;&#xff0c;适用于中大型工程 (2)以代码为准&#xff1a;数据迁移&#xff08;Code First&#xff09;&#xff0c;…

Python 基本语法的详细解释

目录 &#xff08;1&#xff09;注释 &#xff08;2&#xff09;缩进 &#xff08;3&#xff09;变量和数据类型 变量定义 数据类型 &#xff08;4&#xff09;输入和输出 输出&#xff1a;print() 函数 输入&#xff1a;input() 函数 &#xff08;1&#xff09;注释 注…

20-R 绘图 - 饼图

R 绘图 - 饼图 R 语言提供来大量的库来实现绘图功能。 饼图&#xff0c;或称饼状图&#xff0c;是一个划分为几个扇形的圆形统计图表&#xff0c;用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图&#xff0c;语法格式如下&#xff1a; pie(x, l…

Ubuntu 22.04 一键部署MinerU1.1.0

MinerU MinerU是一款将PDF转化为机器可读格式的工具&#xff08;如markdown、json&#xff09;&#xff0c;可以很方便地抽取为任意格式。 MinerU诞生于书生-浦语的预训练过程中&#xff0c;我们将会集中精力解决科技文献中的符号转化问题&#xff0c;希望在大模型时代为科技发…

紫光同创开发板使用教程(二):sbit文件下载

sbit文件相当于zynq里面的bit文件&#xff0c;紫光的fpga工程编译完成后会自动生成sbit文件&#xff0c;因工程编译比较简单&#xff0c;这里不在讲解工程编译&#xff0c;所以我这里直接下载sbit文件。 1.工程编译完成后&#xff0c;可以看到Flow列表里面没有报错&#xff0c…

DeepSeek 部署全指南:常见问题解析与最新技术实践

引言 随着开源大模型DeepSeek的爆火&#xff0c;其部署需求激增&#xff0c;但用户在实际操作中常面临服务器压力、本地部署性能瓶颈、API配置复杂等问题。本文结合2025年最新技术动态&#xff0c;系统梳理DeepSeek部署的核心问题与解决方案&#xff0c;并分享行业实践案例&am…

Vue02

Vue02 绑定class样式 字符串写法&#xff0c;适用于&#xff1a;样式的类名不确定&#xff0c;需要动态指定 数组写法&#xff0c;适用于&#xff1a;要绑定的样式个数不确定&#xff0c;名字也不确定 对象写法&#xff0c;适用于&#xff1a;要绑定的样式个数缺点&#xff…

超导量子计算机的最新进展:走向实用化的量子革命

超导量子计算机的最新进展:走向实用化的量子革命 大家好,我是 Echo_Wish,今天我们来聊聊科技圈最炙手可热的话题之一——超导量子计算机。近年来,量子计算领域可谓是风起云涌,而超导量子计算机作为主流路线之一,已经在学术界和工业界取得了不少突破性进展。 那么,超导…