当前位置:网站首页>REST风格
REST风格
2022-07-24 15:58:00 【白小筠】
REST风格
表现形式状态转换
优点
隐藏资源的访问行为,无法通过地址得知是对资源是何种操作
书写简化
http://localhost/users 查询全部用户信息 GET(查询)
http://localhost/users/1 查询指定用户信息 GET(查询)


http://localhost/users 添加用户信息 POST(新增/保存)
@RequestMapping(value = "/users",method = RequestMethod.POST)
@ResponseBody
public String save(){
System.out.println("user save...");
return "{'module': 'user save'}";
}

http://localhost/users 修改用户信息 PUT(修改/更新)
http://localhost/users/1 删除用户信息 DELETE(删除)
有参数,使用@PathVariable注解从路径中获取参数
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
System.out.println("user delete...id:"+id);
return "{'module': 'user delete'}";
}


@RequestBody @RequestParam @PathVariable区别:
@RequestParam 用于接受url地址传参或表单传参
@RequestBody 用于接受json数据
@PathVariable 用于接受路径参数,使用{参数名称}描述路径参数
简化操作:
//@Controller
//@ResponseBody
//两者合为下面一个
@RestController
@RequestMapping("/users")
public class UserController {
// @RequestMapping(method = RequestMethod.POST)
//替换为
@PostMapping
public String save() {
System.out.println("user save...");
return "{'module': 'user save'}";
}
// @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@DeleteMapping("/{id}")
public String delete(@PathVariable Integer id) {
System.out.println("user delete...id:" + id);
return "{'module': 'user delete'}";
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@GetMapping("/{id}")
public String selectById(@PathVariable Integer id) {
System.out.println("user selectById...id:" + id);
return "{'module': 'user selectById'}";
}
}
案例:基于RESTful页面数据交互
1.先做后台功能,开发接口并调通接口
Controller类中写入两个功能(新建保存,查询所有)
@RestController
@RequestMapping("/books")
public class BookController {
@PostMapping
public String save(@RequestBody Book book){
System.out.println("book save!"+book);
return "{ module:'book save'}";
}
@GetMapping
public List<Book> getAll(){
List<Book> list=new ArrayList<>();
Book book1=new Book();
book1.setType("计算机");
book1.setName("SpringMVC入门教程");
book1.setDescription("小试牛刀");
Book book2=new Book();
book2.setType("计算机");
book2.setName("SpringMVC实战教程");
book2.setDescription("一代宗师");
Book book3=new Book();
book3.setType("计算机");
book3.setName("SpringMVC实战教程进阶");
book3.setDescription("一代宗师呕血创作");
list.add(book1);
list.add(book2);
list.add(book3);
return list;
}
}
在postman中调通接口
第一个功能

第二个功能


2.做页面异步调用,确认功能可以正常访问
//添加
saveBook () {
axios.post("/books",this.formData).then((res)=>{
});
},
//主页列表查询
getAll() {
axios.get("/books").then((res)=>{
this.dataList = res.data;
});
},
3.完成页面数据展示


点击确定返回到控制台查看
数据保存成功
4.补充:放行静态资源
创建一个类继承 WebMvcConfigurationSupport重写其中的addResourceHandlers方法
添加所需要放行的资源
@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
//添加资源过滤
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
}
}
然后要在配置类中扫描该类
@Configuration
@ComponentScan({
"com.itheima.controller","com.itheima.config"})
@EnableWebMvc
public class SpringMvcConfig {
}
边栏推荐
- Using JS to implement click events
- Dynamics 365: explain virtual entity from 0 to 1
- JUC源码学习笔记3——AQS等待队列和CyclicBarrier,BlockingQueue
- Nine key measures to maintain server security in Hong Kong
- What is the ranking of good securities companies? Is online account opening safe
- 22 bracket generation
- What is a firewall? What role can firewalls play?
- 每天20分钟之feign
- [SWT] scrolling container to realize commodity list style
- Introduction to bermudagrass
猜你喜欢
![[SWT] user defined data table](/img/bf/a0c60f1ac9461874b8a573f805e1fe.png)
[SWT] user defined data table

How to choose the appropriate data type for fields in MySQL?

Windows10 installation free redis

MySQL之知识点(十二)

Dynamics crm: mailbox configuration (III) - configure email server profiles and mailboxes

105 constructing binary trees from preorder and inorder traversal sequences

124 maximum path sum in binary tree

JUC source code learning note 3 - AQS waiting queue and cyclicbarrier, BlockingQueue

LaneATT

从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?
随机推荐
Introduction to single chip microcomputer: LED bidirectional water lamp
Dynamics crm: how to set the order of forms
Programming in CoDeSys to realize serial communication [based on raspberry pie 4B]
Yolov4 trains its own data set
AttributeError: module ‘seaborn‘ has no attribute ‘histplot‘
Is Huishang futures platform safe? Is it OK to open a futures account?
Using JS to implement click events
Getting started with OpenMP
JUC源码学习笔记3——AQS等待队列和CyclicBarrier,BlockingQueue
自适应设计和响应式设计
Vscode common shortcut keys
Introduction to kettle messy notes
What is the ranking of good securities companies? Is online account opening safe
Introduction to bermudagrass
Reentrantlock reentrant lock
yolov4 训练自己的数据集
LaneATT
MySQL learning notes (summary)
faster-rcnn 训练自己的数据集
Varnish4.0缓存代理配置