SpringBoot+Vue开发记录(七)-- 跨域文件与Restful风格

本篇文章的主要内容是关于项目的跨域配置和给项目添加restful风格接口。
重点是文件粘贴

文章目录

    • 一、 跨域
    • 二、Restful风格
      • 1. 什么是restful风格?
      • 2. 项目文件结构
      • 3. 新建文件
      • 4. 在Controller中进行修改

一、 跨域

跨域问题暂时也就那样,解决方法就是复制粘贴一个不知道从哪里来的CorsConfig文件,这样就可以解决问题:

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Configuration;import java.io.IOException;/*** @author oyan* @date 2024/5/22 17:20* @description CorsConfig*/
@Configuration
public class CorsConfig implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;HttpServletRequest request = (HttpServletRequest) req;String origin = request.getHeader("Origin");if(origin!=null) {response.setHeader("Access-Control-Allow-Origin", origin);}String headers = request.getHeader("Access-Control-Request-Headers");if(headers!=null) {response.setHeader("Access-Control-Allow-Headers", headers);response.setHeader("Access-Control-Expose-Headers", headers);}response.setHeader("Access-Control-Allow-Methods", "*");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Credentials", "true");chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) {}@Overridepublic void destroy() {}
}

二、Restful风格

1. 什么是restful风格?

其实就是长这个样的:
在这里插入图片描述
在这里插入图片描述

就是返回的参数是这样的,很规整的。

2. 项目文件结构

接下来是这样的结构,你需要新建如下的包
在这里插入图片描述

3. 新建文件

新建枚举CodeEnum


/*** @author oyan* @date 2024/5/22 17:23* @description 枚举*/
public enum CodeEnum {SUCCESS(200,"操作成功"),ERROR(400,"error"),TOKEN_NULL(403,"token不存在"),USER_INFO_ERROR(405,"用户信息错误"),FAIL_APPLY(407,"请求失败"),ROLE_ERROR(406,"角色错误"),TOKEN_ILLEGAL(408,"token不合法");int code;String msg;CodeEnum(int code, String message){this.code=code;this.msg=message;}public int getCode(){return code;}public String getMsg(){return msg;}public String toString(){return "\"{code\":\""+ this.code +"\","+"\"msg\":\""+ this.msg+"\"}";}
}

新建记录Rest


/*** @author Administrator* @date 2024/5/22 17:25* @description Rest restful风格的结果*/
public record Rest<T>(int code, String message, T data) {public static <T> Rest<T> success(T data){return new Rest<>(CodeEnum.SUCCESS.getCode(),CodeEnum.SUCCESS.getMsg(),data);}public static <T> Rest<T> success(){return new Rest<>(CodeEnum.SUCCESS.getCode(), CodeEnum.SUCCESS.getMsg(), null);}public static <T> Rest<T> success(String msg){return new Rest<>(CodeEnum.SUCCESS.getCode(), msg,null);}public static <T> Rest<T> failure(CodeEnum codeEnum){return new Rest<>(codeEnum.getCode(),codeEnum.getMsg(),null);}public static <T> Rest<T> failure(String msg){return new Rest<>(400,msg,null);}
}

4. 在Controller中进行修改

以CategoryController为例:

@RestController
@RequestMapping("/category")
public class CategoryController {@Autowiredprivate CategoryService categoryService;@GetMapping("/all")public Rest findAll() {try{return Rest.success(categoryService.findAll());}catch (Exception e){return Rest.failure(e.getMessage());}}@PostMapping("/input")public Rest insert(@RequestParam("name") String name, @RequestParam("parentCategory") Integer parentCategory, @RequestParam("level") Integer level) {System.out.println(name+parentCategory+level);Category category = new Category();category.setName(name);category.setParentCategory(parentCategory);category.setLevel(level);try {categoryService.insert(category);return Rest.success();}catch(Exception e) {return Rest.failure(e.getMessage());}}@PostMapping("/delete")public Rest delete(@RequestParam("id") Integer id) {try {categoryService.delete(id);return Rest.success();}catch (Exception e){return Rest.failure(e.getMessage());}}@PostMapping("/find")public Rest getCategoryById(@RequestParam("id") Integer id) {try {Category category = categoryService.getCategoryById(id);if(category == null){return Rest.failure("查询结果为空/编号不存在");}return Rest.success(category);}catch (Exception e){return Rest.failure(e.getMessage());}}}

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

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

相关文章

云计算-No-SQL 数据库 (No-SQL Database)

DynamoDB简介 (Introduction to DynamoDB) AWS DynamoDB 是亚马逊提供的一种 NoSQL 数据库&#xff0c;适用于需要快速访问的大规模应用程序。NoSQL 数据库指的是非关系型数据库&#xff08;或许应该称为“非关系数据库”&#xff09;。关系型数据库是你之前可能使用过的熟悉的…

深入Django项目实战与最佳实践

title: 深入Django项目实战与最佳实践 date: 2024/5/19 21:41:38 updated: 2024/5/19 21:41:38 categories: 后端开发 tags: Django 基础项目实战最佳实践数据库配置静态文件部署高级特性 第一章&#xff1a;Django项目架构与设计原则 Django框架概述 Django是一个高级的P…

Next.js里app和pages文件夹的区别

最近开始学 Next.js&#xff0c;因为纯自学&#xff0c;有时候网上找到的学习资料都是几年前的&#xff0c;难免会有点 outdated&#xff0c;因此当自己创建的项目结构和视频里呈现的结构不一致时&#xff0c;难免会有点困惑。 例如&#xff0c;今天遇到的第一个问题就是&…

CAD二次开发(2)-将直线对象添加到CAD图形文件

1. 准备工作 创建一个类库项目&#xff0c;如下&#xff1a; 2. 分析Line对象 Line类的初始化方法和参数 using Autodesk.AutoCAD.DatabaseServices; Line line new Line();Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject 初始化方法有两个&#xf…

大模型分布式训练并行技术分享

目前业内解决大模型问题&#xff0c;基本以多节点、分布式方案为主。分布式方案具体的实施时&#xff0c;又分为数据并行、参数并行、流水线并行等&#xff0c;针对具体的业务场景采取合适的并行方案方可带来更高的效率。 后续结合业内主流的分布式框架&#xff0c;具体介绍各种…

数据库(5)——DDL 表操作

表查询 先要进入到某一个数据库中才可使用这些指令。 SHOW TABLES; 可查询当前数据库中所有的表。 表创建 CREATE TABLE 表名( 字段1 类型 [COMMENT 字段1注释] ...... 字段n 类型 [COMMENT 字段n注释] )[COMMENT 表注释]; 例如&#xff0c;在student数据库里创建一张studen…

网络安全等级保护:正确配置 Linux

正确配置 Linux 对Linux安全性的深入审查确实是一项漫长的任务。原因之一是Linux设置的多样性。用户可以使用Debian、Red Hat、Ubuntu或其他Linux发行版。有些可能通过shell工作&#xff0c;而另一些则通过某些图形用户界面&#xff08;例如 KDE 或 GNOME&#xff09;工作&…

APP安全测试汇总【网络安全】

APP安全测试汇总 一.安装包签名和证书 1.问题说明 检测 APP 移动客户端是否经过了正确签名&#xff0c;通过检测签名&#xff0c;可以检测出安装包在签名后是否被修改过。如 果 APP 使⽤了 debug 进⾏证书签名&#xff0c;那么 APP 中⼀部分 signature 级别的权限控制就会失效…

Unity 生成物体的几种方式

系列文章目录 unity工具 文章目录 系列文章目录前言&#x1f449;一、直接new的方式创建生成1-1.代码如下1-2. 效果图 &#x1f449;二、使用Instantiate创建生成&#xff08;GameObject&#xff09;2-1.代码如下2-2.效果如下图 &#x1f449;三.系统CreatePrimitive创建生成3…

数据结构之栈和队列(超详解

目录 一.栈 1.栈的基本概念 2.栈的基本操作 3.栈的储存结构 ①栈的顺序储存 (1)基本概念 (2)代码实现 ②栈的链式储存 (1)基本概念 (2)代码实现 二.队列 1.队列的基本概念 2.队列的基本操作 3.队列的储存结构 ①队列的链式储存 (1)基本概念 ​编辑 (2)代码实现 ②…

Spring MVC+mybatis 项目入门:旅游网(一)项目创建与准备

个人博客&#xff1a;Spring MVCmybatis 项目入门:旅游网&#xff08;一&#xff09;项目创建与准备 | iwtss blog 先看这个&#xff01; 这是18年的文章&#xff0c;回收站里恢复的&#xff0c;现阶段看基本是没有参考意义的&#xff0c;技术老旧脱离时代&#xff08;2024年辣…

从0开始学统计-卡方检验

1.什么是卡方检验&#xff1f; 卡方检验是一种用于检验观察频数与期望频数之间差异的统计方法。它通常用于分析分类变量之间的关联性或独立性。在卡方检验中&#xff0c;我们将观察到的频数与期望频数进行比较&#xff0c;从而确定它们之间的差异是否显著。 卡方检验的基本思…

【机器学习与大模型】驱动下的应用图像识别与处理

摘要&#xff1a; 本文深入探讨了机器学习在图像识别与处理领域的应用&#xff0c;特别是在大模型的推动下所取得的巨大进展。详细阐述了图像识别与处理的基本原理、关键技术&#xff0c;以及机器学习算法和大模型如何提升其性能和准确性。通过实际案例分析了其在多个领域的广泛…

虚机配置USB CDROM设备热迁移crash

虚机配置USB CDROM设备热迁移crash 问题现象定位过程堆栈分析日志分析打开trace异常日志上下文分析SpecificationCBWCSW 命令执行发送读命令读取数据 正常日志异常堆栈 修复方案结论 基础原理设备模型数据结构设备实例化 UHCIFrame ListTDQH SCSI 问题现象 dogfood环境一台虚机…

夏日炎炎,手机如何避免变成热源?这些降温技巧分享给你

夏日炎炎&#xff0c;手机也容易“中暑”。 高温不仅会让手机性能大打折扣&#xff0c;还可能引发安全隐患。因此&#xff0c;如何让手机在高温下“冷静”下来&#xff0c;成为了许多手机用户关心的问题。 本文将为你提供一些实用的降温技巧&#xff0c;帮助你的手机安全度过…

小猪APP分发:一站式免费应用推广解决方案

在竞争激烈的移动应用市场中&#xff0c;寻找一个高效且成本友好的方式来推广自己的应用程序&#xff0c;成为了众多开发者面临的共同挑战。幸运的是&#xff0c;像"小猪APP分发www.appzhu.cn"这样的平台应运而生&#xff0c;为开发者提供了一个全面、免费的应用分发…

(优作)风力摆控制系统

本系统由瑞萨 100LGA 单片机控制模块&#xff0c; 6050 三轴陀螺仪加速度模块&#xff0c;直流风机及其驱 动模块&#xff0c;显示模块&#xff0c;键盘模块&#xff0c;蜂鸣器模块以及风力摆机械结构组成&#xff0c; MPU6050 采集风摆姿 态&#xff0c;单片机处理姿态数…

RHCSA —— 第一节 (简介)

目录 一、红帽 RedHat Linux 二、计算机 三、操作系统 四、Linux 入门 一、红帽 RedHat Linux RHCSA英文全称&#xff1a;Red Hat Certified System Administrator &#xff0c;中文全称&#xff1a;红帽认证系统管理员 RHCE英文全称&#xff1a;Red Hat Certified Engi…

软件系统部署方案(Word原版文件)

一、 引言 &#xff08;一&#xff09; 编写目的 二、 外部设计 &#xff08;一&#xff09; 标识符和状态 &#xff08;二&#xff09; 约定 1&#xff0e; 数据库涉及字符规范 2&#xff0e; 字段命名规范 &#xff08;三&#xff09; 专门指导 &#xff08;四&#…