当前位置: 首页 > 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.lryc.cn/news/591163.html

相关文章:

  • 【后端】Linux系统发布.NetCore项目
  • suricata新增Mysql告警规则处理
  • Zemax坐标断点
  • GitHub开源轻量级语音模型 Vui:重塑边缘智能语音交互的未来
  • 【git 如何查看本地分支与远程分支之间的差异】
  • Oracle11.2.0.4 RAC迁移升级Oracle19.3 RAC
  • 单片机(STM32-时钟系统)
  • AI 智能质检系统在汽车制造企业的应用​
  • select_shape_proto 用起来很省事
  • 错误 0x80370102排查
  • CCLink IE转ModbusTCP网关配置无纸记录器(中篇)
  • 大语言模型系列(1): 3分钟上手,在骁龙AI PC上部署DeepSeek!
  • uniapp云托管前端网页
  • CentOS在线安装docker教程
  • 人工智能概念之八:常见的参数调优方法(交叉验证网格搜索、随机优化、贝叶斯优化、Hyperband优化)
  • npm 和 npx 区别对比
  • Django `transaction.atomic()` 完整使用指南
  • Java行为型模式---命令模式
  • Visual Studio 的常用快捷键
  • 自定义 django 中间件
  • 巧用 Golang 函数特性实现单元测试中的数据库操作 Mock
  • Kafka 控制器(Controller)详解:架构、原理与实战
  • 我的开发日志:随机数小程序
  • Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案
  • Kafka 配置参数详解:ZooKeeper 模式与 KRaft 模式对比
  • mac OS上docker安装zookeeper
  • 第二十三篇文档格式互转大师:Python实现PDF、Word、图片、Markdown的高效转换!你的万能转换器!
  • SpringMVC @ResponseBody注解详解
  • 如何选择合规的上门按摩系统
  • Maven详细解