一文读Web开发 之接口后端接口、类与前端请求、拦截器编写

简介: 一文读Web开发 之接口后端接口、类与前端请求、拦截器编写

一文读Web开发 之接口后端接口、类与前端请求、拦截器编写

写在前面:我们开发Web网页的框架可能不同,但其思想都是一致的,Web要做的事情只有前端处理用户交互去后端拿数据 后端保证前端能拿到想要的数据,在此基础上有着很多的问题 因此有了redis、MQ等等,使用什么框架来做不重要

本文使用Springboot加Vue带您快速入门前后端的数据获取 阅读本文需要有HTTP基础 不会也没有关系 我会给您做一个简单的介绍

HTTP(超文本传输协议)

HTTP(HyperText Transfer Protocol)是一种用于传输超文本文档(例如 HTML)的应用层协议。它是互联网上最常用的协议之一,用于客户端和服务器之间的通信。

特点和组成部分

  1. 无状态协议:HTTP是一种无状态协议,意味着每个请求都是独立的,服务器不会存储关于客户端的状态信息。每个请求都必须包含所有必要的信息,以便服务器能够正确处理请求。
  2. 基于请求-响应模型:HTTP基于请求-响应模型,客户端发送请求给服务器,服务器响应请求并返回相应的资源。
  3. 支持多种请求方法:HTTP定义了几种不同的请求方法,用于指定对服务器资源的不同操作,其中最常见的包括:
  • GET:请求指定的资源。
  • POST:向服务器提交数据。
  • PUT:将资源放置到指定的 URL 下。
  • DELETE:请求服务器删除指定的资源。
  1. URL:统一资源定位符(URL)用于标识要请求或操作的资源的位置。它由协议类型、主机名、端口号和路径组成,例如:http://example.com:80/index.html
  2. 状态码:HTTP响应包括一个状态码,用于指示服务器对请求的处理结果,常见的状态码包括:
  • 200 OK:请求成功。
  • 404 Not Found:请求的资源未找到。
  • 500 Internal Server Error:服务器遇到了意外的情况,无法完成请求。
  1. 头部信息:HTTP请求和响应中可以包含头部信息,用于传输额外的元数据,例如:
  • Content-Type:指定实体主体的内容类型。
  • Content-Length:指定实体主体的长度。
  • User-Agent:标识发送请求的客户端。
  1. 实体主体:某些HTTP请求和响应包含一个实体主体,用于传输数据,例如HTML文档、JSON数据等。
  2. 持久连接:HTTP/1.1引入了持久连接,允许客户端和服务器之间的单个TCP连接上进行多个HTTP请求和响应,以减少连接的开销。

  • 如果还不懂 请去b站找个视频看看 博客看文章也行

后端 使用SpringBoot框架

请求参数类型及处理办法

Headers http://localhost/api/setmeal Path: /admin/setmeal

参数名称 参数值 是否必须 示例 备注
Content-Type application/json

三、@RequestBody

从http请求body部分获取参数,通常用于接受json或xml格式

路径参数 http://localhost/api/setmeal/44 Path: /admin/setmeal/{id}

参数名称 示例 备注
status 1 套餐状态,1表示起售,0表示停售

一、@PathVariable

用于从请求的URL路径中获取路径变量的值。路径变量是URL中的一部分,用于在RESTful风格的API中传递数据。路径变量的值会直接嵌入到URL路径中,并使用占位符 {} 来表示,Spring MVC 会根据占位符中的变量名将值注入到方法参数中。

@GetMapping("/users/{userId}")
public String getUser(@PathVariable("userId") Long userId) {
    // 根据用户ID查询用户信息
}

查询参数 http://localhost/api/setmeal/page?page=1&pageSize=10&status= Path: /admin/setmeal/page

Query:
参数名称 是否必须 示例 备注
categoryId 分类id
name 套餐名称
page 页码
pageSize 每页记录数
status 套餐起售状态
//以下代码是请求参数对应接收类
@Data
public class SetmealPageQueryDTO implements Serializable {
    private int page;
    private int pageSize;
    private String name;
    //分类id
    private Integer categoryId;
    //状态 0表示禁用 1表示启用
    private Integer status;
}

  • 为什么这里可以不加任何东西就获取到参数呢?
  • 当Spring MVC发现一个方法的参数类型不是基本类型(如int、String等)而是一个POJO(Plain Old Java Object)时,它会尝试从请求中提取参数,并将参数的值赋给该POJO对象对应的属性

二、@RequestParam

用于从请求的查询参数中获取单个参数值。通常用于GET请求或者POST请求中的查询参数。在GET请求中,查询参数会附加在URL后面,如 ?key1=value1&key2=value2,而在POST请求中,查询参数会放在请求体中,需要使用 @RequestParam 指定参数名来获取值。

@GetMapping("/search")
public String search(@RequestParam("keyword") String keyword) {
    // 处理查询操作
}
还可以使用@ModelAttribute

类开发五步走

一:添加Spring Framework中的类标识注解 @RestController 这个注解后面可以跟上命名,当同一个项目中有两个一样的类名时,就可以使用这个注解来进行区别

二:添加处理路径 @RequestMapping(“/”)

三:添加日志记录器 原生是logging。这里我选择使用@Slf4j 创建日志记录器,并进行管理。使用该注解后,使用 log 对象进行管理

四:生成接口文档 @Api(tags = "标题") 这里使用Swagger生成接口文档,方便测试

五:对象管理 使用 @Autowired 来进行依赖注入

接口开发

接口开发主要有三个地方需要开发,一是controller二是 service 三是mapper

控制器controller开发四步走

@PostMapping("/admin/employee")
@ApiOperation("新增员工")
public Result save(@RequestBody EmployeeDTO employeeDTO){
    //RequestBody 注解的作用是告诉Spring MVC框架,要将HTTP请求的body部分(通常是JSON或XML格式的数据)映射到方法参数 employeeDTO 上。
    
    log.info("新增员工:{}",employeeDTO);
    employeeService.sava(employeeDTO);
}

一: 确认控制器地址 @PostMapping(“/admin/employee”) 确认后面的请求路劲该写什么

二:编写传输的数据模型 编写一个实体用来接收前端传递过来的数据模型 EmployeeDTO employeeDTO

三:编写处理返回结果的类 Result

四:调用业务逻辑层的相关方法 employeeService.sava(employeeDTO);

附加: log.info(“新增员工:{}”,employeeDTO);便于调试@ApiOperation(“新增员工”)使得生成出来的接口测试站点更加容易阅读

业务逻辑层开发

一:编写接口的方法

二: 在实现类中实现

三:封装好属性与数据

记得在业务逻辑类前加上@service标签

业务逻辑层(service)开发小技巧

遇到前端传来数据与数据库实体差距过大创建了两个对象的时候,业务逻辑层使用对象拷贝能更快拿到数据

前段 接口、拦截器编写

基础数据渲染 四步走

第一步 导入模版/写基础代码

  • 先将基础的样式写好 在需要与数据同步的地方可以用

第二步 编写请求接口(在你已经拥有一个请求拦截器的情况下)

  • 此处需要根据接口文档来进行编写接口
我没有拦截器 该怎么办?

  • 选择你发送请求的技术 比如axios 然后看官方文档要如何操作
  • axios使用方式如上

第三步 调用获取数据接口 并查看请求有没有发出

第四步 查看请求数据格式并渲染数据

  • 查看到的格式如上

  • 根据数据格式完成数据渲染

请求接口编写 两步走

第一步 确认已有拦截器并根据接口文档编写

第二步 在实际应用中的解析

  • 给按钮绑定一个点击事件 通过点击触发
目录
相关文章
|
14天前
|
API 持续交付 开发者
后端开发中的微服务架构实践与挑战
在数字化时代,后端服务的构建和管理变得日益复杂。本文将深入探讨微服务架构在后端开发中的应用,分析其在提高系统可扩展性、灵活性和可维护性方面的优势,同时讨论实施微服务时面临的挑战,如服务拆分、数据一致性和部署复杂性等。通过实际案例分析,本文旨在为开发者提供微服务架构的实用见解和解决策略。
|
16天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
103 45
|
7天前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
6天前
|
JSON 前端开发 API
后端开发中的API设计与文档编写指南####
本文探讨了后端开发中API设计的重要性,并详细阐述了如何编写高效、可维护的API接口。通过实际案例分析,文章强调了清晰的API设计对于前后端分离项目的关键作用,以及良好的文档习惯如何促进团队协作和提升开发效率。 ####
|
8天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
27 4
|
7天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
12天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
8天前
|
监控 API 持续交付
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势、面临的挑战以及最佳实践策略。不同于传统的单体应用,微服务通过细粒度的服务划分促进了系统的可维护性、可扩展性和敏捷性。文章首先概述了微服务的核心概念及其与传统架构的区别,随后详细阐述了构建微服务时需考虑的关键技术要素,如服务发现、API网关、容器化部署及持续集成/持续部署(CI/CD)流程。此外,还讨论了微服务实施过程中常见的问题,如服务间通信复杂度增加、数据一致性保障等,并提供了相应的解决方案和优化建议。总之,本文旨在为开发者提供一份关于如何在现代后端系统中有效采用和优化微服务架构的实用指南。 ####
|
10天前
|
消息中间件 设计模式 运维
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在现代后端开发中的应用,通过实际案例分析,揭示了其在提升系统灵活性、可扩展性及促进技术创新方面的显著优势。同时,文章也未回避微服务实施过程中面临的挑战,如服务间通信复杂性、数据一致性保障及部署运维难度增加等问题,并基于实践经验提出了一系列应对策略,为开发者在构建高效、稳定的微服务平台时提供有价值的参考。 ####
|
10天前
|
存储 关系型数据库 Java
探索后端开发:从基础到进阶
【10月更文挑战第33天】在这篇文章中,我们将深入探讨后端开发的各个方面,包括基本概念、关键技术和最佳实践。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和启示。我们将通过代码示例来展示一些常见任务的实现方法,并分享一些实用的技巧和策略,帮助你提高后端开发的效率和质量。无论你是想学习新的编程语言还是想了解最新的后端技术趋势,这篇文章都会为你提供有益的指导和灵感。让我们一起开启后端开发的探索之旅吧!

热门文章

最新文章