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

SpringBoot Rest风格 API - 努力-

一、添加Rest API

1.1 添加部门

/**
* 添加部门 
*/
@Log
@PostMapping
public Result add(@RequestBody Dept dept){System.out.println("添加部门: " + dept);deptService.add(dept);return Result.success();
}

1.2 添加分类

 @PutMapping@ApiOperation(value = "保存Category",notes = "添加Category")@ApiImplicitParam(name = "categoryVO",value = "保险分类VO对象",required = true,dataType = "CategoryVO")@ApiOperationSupport(includeParameters = {"categoryVO.dataState","categoryVO.parentCategoryNo","categoryVO.categoryName","categoryVO.icon","categoryVO.leafNode","categoryVO.showIndex","categoryVO.categoryType","categoryVO.sortNo","categoryVO.remake","categoryVO.insuranceType","categoryVO.categoryClaimVOs.claimKey","categoryVO.categoryConditionVOs.conditionKey","categoryVO.categoryCoefficentVOs.coefficentKey","categoryVO.categorySafeguardVOs.safeguardKey"})public ResponseResult<CategoryVO> createCategory(@RequestBody CategoryVO categoryVO) {CategoryVO categoryVOResult = categoryService.save(categoryVO);return ResponseResultBuild.successBuild(categoryVOResult);}

二、查询 Rest API

2.1查询部门

/**
* 根据ID查询部门数据
* @return
*/
@GetMapping("/{id}")
public Result getInfo(@PathVariable Integer id){System.out.println("根据ID查询部门数据: " + id);return Result.success();
}
@GetMapping("/depts/{id}/{status}")
public Result getInfo(@PathVariable Integer id, @PathVariable Integer sta){//...
}

2.2 查询分类

  @PostMapping("page/{pageNum}/{pageSize}")@ApiOperation(value = "分类分页",notes = "分类分页")@ApiImplicitParams({@ApiImplicitParam(name = "categoryVO",value = "分类VO对象",required = true,dataType = "CategoryVO"),@ApiImplicitParam(paramType = "path",name = "pageNum",value = "页码",example = "1",dataType = "Integer"),@ApiImplicitParam(paramType = "path",name = "pageSize",value = "每页条数",example = "10",dataType = "Integer")})public ResponseResult<Page<CategoryVO>> findCategoryVOPage(@RequestBody CategoryVO categoryVO,@PathVariable("pageNum") int pageNum,@PathVariable("pageSize") int pageSize) {Page<CategoryVO> categoryVOPage = categoryService.findPage(categoryVO, pageNum, pageSize);return ResponseResultBuild.successBuild(categoryVOPage);}

三、修改 Rest API

3.1 修改部门

/*** 修改部门数据*/
@PutMapping
public Result update(@RequestBody Dept dept){System.out.println("修改部门数据: " + dept);deptService.update(dept);return Result.success();
}

3.2 修改分类

@Slf4j
@Api(tags = "分类")
@RestController
@RequestMapping("category")
public class CategoryController {@AutowiredICategoryService categoryService;@PatchMapping@ApiOperation(value = "修改保险分类",notes = "修改保险分类")@ApiImplicitParam(name = "categoryVO",value = "保险分类VO对象",required = true,dataType = "CategoryVO")@ApiOperationSupport(includeParameters = {"categoryVO.id","categoryVO.dataState","categoryVO.parentCategoryNo","categoryVO.categoryNo","categoryVO.categoryName","categoryVO.icon","categoryVO.leafNode","categoryVO.showIndex","categoryVO.categoryType","categoryVO.sortNo","categoryVO.remake","categoryVO.insuranceType","categoryVO.categoryClaimVOs.claimKey","categoryVO.categoryConditionVOs.conditionKey","categoryVO.categoryCoefficentVOs.coefficentKey","categoryVO.categorySafeguardVOs.safeguardKey"})public ResponseResult<Boolean> updateCategory(@RequestBody CategoryVO categoryVO) {Boolean flag = categoryService.update(categoryVO);return ResponseResultBuild.successBuild(flag);}

@RequestMapping

四、分页查询 Rest API

4.1 部门条件分页

/**
* 条件分页查询
*/
@GetMapping
public Result page(EmpQueryParam param) {log.info("请求参数: {}", param);PageBean pageBean = empService.page(param);return Result.success(pageBean);
}
@Data
public class EmpQueryParam {private Integer page = 1; //页码private Integer pageSize = 10; //每页展示记录数private String name; //姓名private Integer gender; //性别@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate begin; //入职开始时间@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate end; //入职结束时间}

部门分页

@Slf4j
@RequestMapping("/emps")
@RestController
public class EmpController {@Autowiredprivate EmpService empService;@GetMappingpublic Result page(@RequestParam(defaultValue = "1") Integer page ,@RequestParam(defaultValue = "10") Integer pageSize){log.info("查询员工信息, page={}, pageSize={}", page, pageSize);PageBean pageBean = empService.page(page, pageSize);return Result.success(pageBean);}}

4.2 分类分页

 @PostMapping("page/{pageNum}/{pageSize}")@ApiOperation(value = "分类分页",notes = "分类分页")@ApiImplicitParams({@ApiImplicitParam(name = "categoryVO",value = "分类VO对象",required = true,dataType = "CategoryVO"),@ApiImplicitParam(paramType = "path",name = "pageNum",value = "页码",example = "1",dataType = "Integer"),@ApiImplicitParam(paramType = "path",name = "pageSize",value = "每页条数",example = "10",dataType = "Integer")})@ApiOperationSupport(includeParameters = {"categoryVO.parentCategoryNo","categoryVO.categoryNo","categoryVO.categoryName","categoryVO.icon","categoryVO.leafNode","categoryVO.showIndex","categoryVO.categoryType","categoryVO.sortNo","categoryVO.remake","categoryVO.insuranceType"})public ResponseResult<Page<CategoryVO>> findCategoryVOPage(@RequestBody CategoryVO categoryVO,@PathVariable("pageNum") int pageNum,@PathVariable("pageSize") int pageSize) {Page<CategoryVO> categoryVOPage = categoryService.findPage(categoryVO, pageNum, pageSize);return ResponseResultBuild.successBuild(categoryVOPage);}

五、删除 Rest API

5.1 删除部门
方案一:通过原始的 HttpServletRequest 对象获取请求参数

/**
* 根据ID删除部门 - 简单参数接收: 方式一 (HttpServletRequest)
*/
@DeleteMapping("/depts")
public Result delete(HttpServletRequest request){String idStr = request.getParameter("id");int id = Integer.parseInt(idStr);System.out.println("根据ID删除部门: " + id);return Result.success();
}

方案二:通过Spring提供的 @RequestParam 注解,将请求参数绑定给方法形参

@DeleteMapping("/depts/{id}")
public Result delete(@RequestParam("id") Integer deptId){System.out.println("根据ID删除部门: " + deptId);return Result.success();
}

@RequestParam 注解的value属性,需要与前端传递的参数名保持一致 。

@RequestParam注解required属性默认为true,代表该参数必须传递,如果不传递将报错。 如果参数可选,可以将属性设置为false。

方案三:如果请求参数名与形参变量名相同,直接定义方法形参即可接收。(省略@RequestParam)

@DeleteMapping("/depts/{id}")
public Result delete( @RequestParam("id") Integer id){System.out.println("根据ID删除部门: " + deptId);return Result.success();
}

5.2 删除分类

 @DeleteMapping@ApiOperation(value = "删除分类",notes = "删除分类")@ApiImplicitParam(name = "categoryVO",value = "分类VO对象",required = true,dataType = "CategoryVO")@ApiOperationSupport(includeParameters = {"categoryVO.checkedIds"})public ResponseResult<Boolean> deleteCategory(@RequestBody CategoryVO categoryVO) {Boolean flag = categoryService.delete(categoryVO.getCheckedIds());return ResponseResultBuild.successBuild(flag);}

@RequestBody与@RequestParam区别:

  • 区别:
    @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】。
    @RequestBody用于接收json数据【application/json】。
  • 应用:
    开发中,发送json格式数据为主,@RequestBody应用较广。
    如果发送非json格式数据,选用@RequestParam接收请求参数。

六、REST介绍

  • REST(Representational State Transfer),表现形式状态转换。
    • 传统风格资源描述形式:
      http://localhost/user/getById?id=1。
      http://localhost/user/saveUser。
    • REST风格描述形式:
      http://localhost/user/1。
      http://localhost/user。
  • 优点:
    • 隐藏资源的访问行为,无法通过地址得知对资源是何种操作。
    • 书写简化。

RESTful介绍:

  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作。
    http://localhost/users 查询全部用户信息 (查询)。
    http://localhost/users/1 查询指定用户信息(查询)。
    http://localhost/users 添加用户信息(新增/保存)。
    http://localhost/users 修改用户信息(修改/更新)。
    http://localhost/users/1 删除用户信息(删除)。

根据REST风格对资源进行访问称为RESTful。

http://www.jsqmd.com/news/389784/

相关文章:

  • 零代码零基础!小红书MCP全自动化运营【保姆级安装教程】
  • 深入解析:微小卫星红外相机双MCU冗余架构的抗辐照可靠性评估
  • 订单支付-业务分析 - 努力-
  • 2026年初二名著导读,同步练习册哪个更实用?同步测试卷/一模卷/期中自测卷/冲刺卷,同步练习册产品品牌推荐 - 品牌推荐师
  • 订单支付-签约支付 - 努力-
  • 订单支付-支付宝API - 努力-
  • SWC深度解析
  • 从Web到AI:多模态Agent Skills生态系统实战(Java+Vue构建跨模态智能体)深度解析:原理、实战与踩坑记录
  • Husky + lint-staged深度解析
  • python粮库信息化管理系统 粮食仓储管理系统_4zk5260a
  • python旅行行程旅游规划管理系统
  • python流浪猫狗救助管理系统
  • 设计模式-策略模式 - 努力-
  • python基于微信小程序校园竞赛信息分享系统
  • python基于社交与电商直播家庭园艺商城综合平台
  • Python核心语法-Numpy、Pandas - 努力-
  • 综述不会写?万众偏爱的AI论文网站 —— 千笔AI
  • 基于YOLO11-EfficientViT的辉长岩及其相关岩石类型计算机视觉识别分类系统_1
  • 毕业论文神器!降AI率平台 千笔·降AI率助手 VS Checkjie MBA专属利器
  • 照着用就行:千笔ai写作,人气爆表的一键生成论文工具
  • Flowise 自定义MCP节点远程代码执行漏洞 (CVE-2025-59528) 分析
  • 2026别错过!降AI率软件 千笔·专业降AIGC智能体 VS 知文AI,MBA专属高效之选
  • 对比一圈后,更贴合本科生的AI论文工具,千笔·专业论文写作工具 VS 灵感ai
  • OpenCode 里的 Atlas / Sisyphus / Prometheus区别
  • 真的太省时间!千笔·专业论文写作工具,领军级的AI论文网站
  • 热烈庆祝Ctorch RC1发布! - Ghost
  • Prettier深度解析
  • iPaaS平台:企业数字化转型的核心基础设施
  • 一文讲透|AI论文软件 千笔AI VS 灵感风暴AI,本科生必备神器!
  • 2025年国内评价高的库房货架供应厂家排行榜,贯通式货架/驶入式货架/轻型货架/贯通货架,库房货架供应厂家排名 - 品牌推荐师