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

ResTful风格的Url

7.1 RESTful简介

RESTful就是一个资源定位及资源操作的风格。不是标准也不
是协议,只是一种风格。基于这个风格设计的软件可以更简
洁,更有层次。

往常的传参方式: 

http://localhost:8080/springmvc02/user/queryUserById?id= 1 查询
http://localhost:8080/springmvc02/user/saveUser新增
http://localhost:8080/springmvc02/user/updateUser 更新
http://localhost:8080/springmvc02/user/deleteUserById?id=1 删除

使用RESTful操作资源:使用URL+请求方式确定具体的动作

使用Restful操作:

http://localhost:8080/springmvc02/user/1  查询,GET
http://localhost:8080/springmvc02/user    新增,POST
http://localhost:8080/springmvc02/user    更新,PUT 
http://localhost:8080/springmvc02/user/1  删除,DELETE

RESTFul风格好处:

安全:使用问号键值对的方式给服务器传递数据太明显,
容易被人利用来对系统进行破坏。使用 REST 风格携带数
据不再需要明显的暴露数据的名称。
风格统一:URL 地址整体格式统一,从前到后始终都使用
斜杠划分各个单词,用简单一致的格式表达语义。
简洁:过去做增删改查操作需要设计4个不同的URL,现在
一个就够了。

查询 /emp/editEmp?empId=2 /emp/2      请求方式:GET
保存 /emp/saveEmp /emp                请求方式:POST
更新 /emp/updateEmp /emp              请求方式:PUT
删除 /emp/removeEmp?empId=2 /emp/2    请求方式:DELETE

7.2 RESTFul案例

@Controller
public class EmpController {
//根据ID查询
@RequestMapping(value ="/emp/{empId}",method = RequestMethod.GET)
@ResponseBody
public Result findById(@PathVariable("empId") Integer empId){
Result result=new Result(20001,"查询成功",empId);
return result;
}

//查询所有
@RequestMapping(value = "/emp",method =RequestMethod.GET)
@ResponseBody
public Result findAll(){
Result result=new Result(20002,"查询成功",null);
return result;
}

//保存
@RequestMapping(value = "/emp",method = RequestMethod.POST)
@ResponseBody
public Result save(@RequestBody Emp emp){
Result result=new Result(20003,"保存成功",emp);
return result;
}

//删除
@RequestMapping(value ="/emp/{empId}",method = RequestMethod.DELETE)
@ResponseBody
public Result delete(@PathVariable("empId")Integer empId){
Result result=new Result(20004,"删除成功",empId);
return result;
}

//修改
@RequestMapping(value = "/emp",method = RequestMethod.PUT)
@ResponseBody
public Result update(@RequestBody Emp emp){
Result result=new Result(20005,"修改成功",emp);
return result;
}
}

7.3 注解优化

 

@RestController //这一个注解相当于同时写了@Controller+@ResponseBody
@RequestMapping("/emp")
public class EmpController {
//根据ID查询
@GetMapping("/{empId}")
@ResponseBody
public Result findById(@PathVariable("empId") Integer empId){
Result result=new Result(20001,"查询成功",empId);
return result;
}
//查询所有
@GetMapping
@ResponseBody
public Result findAll(){
Result result=new Result(20002,"查询成功",null);
return result;
}
//保存
@PostMapping
@ResponseBody
public Result save(@RequestBody Emp emp){
Result result=new Result(20003,"保存成功",emp);
return result;
}
//删除
@DeleteMapping("/{empId}")
@ResponseBody
public Result delete(@PathVariable("empId")
Integer empId){
Result result=new Result(20004,"删除成功",empId);
return result;
}
//修改
@PutMapping
@ResponseBody
public Result update(@RequestBody Emp emp){
Result result=new Result(20005,"修改成功",emp);
return result;
}
}

 


http://www.kler.cn/a/377785.html

相关文章:

  • QT-【常用容器类】-QList类 QLinkedList类
  • 数据科学与SQL:如何利用Oracle 计算正态分布概率密度?
  • 300多种复古手工裁剪拼贴艺术时尚字母、数字、符号海报封面Vlog视频MOV+PNG素材
  • 云途领航:现代应用架构助力企业转型新篇
  • 从虚拟到现实:AI与AR/VR技术如何改变体验经济?
  • python中使用selenium执行组合快捷键ctrl+v不生效问题
  • Mac如何实现高效且干净的卸载应用程序
  • Gateway解说
  • 目标追踪DeepSort
  • network HCIE认证
  • 一文带你深入理解Rust 中的 Trait 一致性(Coherence)
  • SparkSQL整合Hive后,如何启动hiveserver2服务
  • Spring Boot框架下的水电管理系统开发
  • leetcode-21-合并两个有序链表
  • mac电脑设置crontab定时任务,以及遇到的问题解决办法
  • 【力扣专题栏】两数之和,两种解法实现该题。
  • python数据类型-8-数据结构-Queue (队列)
  • leetcode3. Longest Substring Without Repeating Characters
  • 获取Hive表备注
  • nodejs入门教程16:nodejs res
  • 基于MATLAB多参数结合火焰识别系统
  • 【系统面试篇】进程和线程类(1)(笔记)——区别、通讯方式、同步、互斥、死锁
  • AI周报(10.27-11.02)
  • 实现短信中带有链接,直接打开微信小程序
  • Xamarin 实现播放视频 MP4
  • 你竟然还不了解 LDAP?