当前位置: 首页 > news >正文

web后端开发(javaweb第十天)

开发规范-Restful

表述性状态转移,他是一种软件架构风格
描述模块功能通常用复数(加s),表示此类资源

HTTP 方法含义RESTful 表现示例 URI
GET查询资源获取某个资源或资源列表/users(用户列表),/users/1(ID为1的用户)
POST创建资源新增一个资源/users(创建新用户)
PUT更新资源更新整个资源(幂等)/users/1(更新用户1信息)
PATCH局部更新更新部分字段/users/1(只改名等)
DELETE删除资源删除某个资源/users/1(删除用户1)
操作方法URI描述
获取用户列表GET/users获取所有用户
获取指定用户GET/users/1获取ID为1的用户
创建新用户POST/users创建用户(请求体中传 JSON)
更新用户信息PUT/users/1更新用户1的全部字段
局部更新PATCH/users/1更新用户1的部分字段
删除用户DELETE/users/1删除用户1

人话:动作不写在url里面,由http响应类型决定

前后端统一响应结果(Result)

字段类型含义
codeint状态码,如 200 成功,400 参数错误
messageString对应状态的消息提示
data任意类型返回的真实业务数据,如对象、列表、分页结果等

开发流程

明确需求
接口文档
思路分析
接口开发

接口调试

postman测试
前后端联调

日志技巧

直接使用 @Slf4j标签

公共的路径可以抽取在@RequestMapping(“/depts”)

设置请求参数默认值

@RequestParam(defaultValue=“1”)

PageHelper分页插件

引入依赖

<!--        分页查询依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.7</version></dependency>

使用:

 //1、设置分页参数PageHelper.startPage(page,pageSize);//2、执行查询List<Emp> empList=empMapper.list();Page<Emp> p=(Page<Emp>) empList;//3、封装pageBean对象PageBean pageBean=new PageBean((int) p.getTotal(),p.getResult());

注意:在编写SQL语句时不要在后面加;,因为PageHelper会自动在后面加上limit限制和;

感想

请求参数:参考前面博客

使用参数:
单个参数、对象参数可以直接用属性名
多个参数需要用@param绑定或者配置保留形参名配置

MySQL返回结果给对象
需要保障对象名对应
不对应需要别名一样,或者绑定,或者开启驼峰与下划线名字映射配置

文件上传

将本地数据上传到服务器,供其他用户浏览下载

前端页面三要素:
表单项type=“file”
表单提交方式:post
表单的entrytype属性:multipart/form-data

服务端接收文件:MultipartFile image(形参)
接收的是临时文件,请求结束自动删除

转化为字符串的方法以及细节

场景推荐用法
把任何对象转成字符串(调试、日志)String.valueOf(obj) ✅ 安全、null 也不会错
对象已经是 String 类型,想强转(String) obj ✅ 仅限确切类型已知
可能是 null 的对象想要字符串String.valueOf(obj) ✅ 推荐方式

文件存储

本地存储

将文件存储在本地服务器磁盘中

image.transferTo(new File(pathname));

防止上传的文件名重复导致覆盖
使用uuid(通用唯一识别码)解决
UUID.randomUUID.toString()

文件存储:

@Slf4j
@RestController
public class UploadController {@PostMapping("/upload")public Result upload(MultipartFile image) throws Exception {String originalFilename=image.getOriginalFilename();String newFilename= UUID.randomUUID().toString()+originalFilename.substring(originalFilename.lastIndexOf("."));image.transferTo(new File("D:/tmp/"+newFilename));return Result.success();}
}

注意:spring中上传文件大小默认为1M,大文件需进行如下配置

本地存储现在不怎么用了
因为:浏览器无法直接访问、服务器磁盘有限、磁盘坏了

方法:
1、自己搭建存储集群(FastDFS、MinIO)
2、使用云服务

第三方服务-通用思路

准备->参考SDK(软件开发工具包)->集成使用

配饰文件

问题:用到不同技术配置信息放在java类中不便于集中管理

@value:外部配置的属性注入
用法:@value(“${配置文件中的key}”)

   @Value("${Aliyun.oss.endpoint}")private String endpoint;@Value("${Aliyun.oss.bucketName}")private String bucketName;@Value("${Aliyun.oss.region}")private String region;Aliyun.oss.endpoint=https://oss-cn-beijing.aliyuncs.comAliyun.oss.bucketName=web-tlias-lhxAliyun.oss.region =cn-beijing

配置文件类型(yml)

XML:结构好但是臃肿
properties:层级结构不清晰
yml:结构清晰,简洁

yml基础语法:

大小写敏感

数字左边必须有空格,作为分隔符

使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea自动转换)

缩进的空格数目不重要,只要相同层级的元素左对齐即可

#表示注释,从这个字符一直到行尾,都会被解析器忽略

#定义对象/Map集合
user:name: Tomage: 20address: beijing#定义数组/List/Set集合
hobby:- java- c- game- sport

@ConfigurationPeoperties注解(设置前缀)
@Value标签比较繁琐,用以代替

使用的前提:
key值需要与字段名形同
设置get、set方法(@Data标签)

@ConfigurationPeoperties批量将外部属性配置注入到bean对象属性中
(属性多,想复用时用)
@Value一个一个进行外部属性注入(属性少时候用)

http://www.dtcms.com/a/283700.html

相关文章:

  • 实现分页查询
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘django’问题
  • Java行为型模式(状态模式)实现方式与测试方法
  • MySQL配置性能优化
  • UGUI 性能优化系列:第一篇——基础优化与资源管理
  • GPTQ与Unsloth量化区别
  • Java Stream API性能优化:原理深度解析与实战指南
  • 小程序性能优化全攻略:提升用户体验的关键策略
  • 数据结构——树(2)
  • 6. 工程化实践类:《Webpack 5 性能优化全指南:从构建速度到输出质量》
  • DocsGPT:您的智能知识助手,解锁高效信息检索
  • pytorch学习笔记(五)-- 计算机视觉的迁移学习
  • Redis3:Redis数据结构与命令全解析
  • Redis单机主从复制+多机主从复制的实现(一主两从)
  • C语言模拟面向对象三大特性与C++实现对比
  • HTML常用标签汇总(精简版)
  • 模型移植实战:从PyTorch到ONNX完整指南
  • ionic 切换开关操作指南
  • iOS 构建配置与 AdHoc 打包说明
  • 从零开发推客小程序系统:完整技术方案与实战经验
  • C语言:20250717笔记
  • Redis深度解析:从缓存原理到高并发实战
  • AI算法机器学习主要类型
  • 专业云端视觉计算解决方案:云渲染云电脑
  • 【AI论文】基于反射生成模型的测试时动态缩放方法
  • 【软件测试】软件测试分类与方法解析:目标到工具
  • HANA SQLScript中的变量类型汇总
  • 云原生环境下的安全控制框架设计
  • USB导出功能(QT)
  • Windows10笔记本电脑开启BIOS