SpringMVC -- REST风格开发,RESTful快速开发、RESTful注解开发

简介: SpringMVC -- REST风格开发,RESTful快速开发、RESTful注解开发

一、REST简介

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

1.1REST风格简介

  • 按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
  • http://localhost/users 查询全部用户信息 - - GET(查询)
  • http://localhost/users/1 查询指定用户信息 - - GET(查询)
  • http://localhost/users 添加用户信息 - - POST(新增/保存)
  • http://localhost/users 修改用户信息 - - PUT(修改/更新)
  • http://localhost/users/1删除用户信息 - - DELETE(删除)
  • 上述行为是约定方式,约定不是规范,可以打破,所以称 REST风格,而不是REST规范
  • 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源。
  • 根据REST风格对资源进行访问叫做RESTful

二、RESTful入门案例

2.1设定http请求动作(动词)

@RequestMapping(value = "/users", method = RequestMethod.GET)
    @ResponseBody
    public String save() {
        System.out.println("use save...");
        return "'module':'user save'";
    }
//修改
    @RequestMapping(value = "/users", method = RequestMethod.PUT)
    @ResponseBody
    public String update(@RequestBody User user) {
        System.out.println("use update..." + user);
        return "'module':'user update'";
    }

2.2设定请求参数(路径变量)

//带参数
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable int id) {
        System.out.println("use delete..." + id);
        return "'module':'user delete'";
    }

  • 名称:@RequestMapping
  • 类型:方法注解
  • 位置:SpringMVC控制器方法定义上方
  • 作用:设置当前控制器方法请求访问路径
  • 范例:
@RequestMapping(value = "/users", method = RequestMethod.GET)
    @ResponseBody
    public String save() {
        System.out.println("use save...");
        return "'module':'user save'";
    }
  • 属性:
  • value(默认):请求访问路径
  • method:http请求动作,标准动作(GET/POST/PUT/DELETE)

  • 名称:@PathVariable
  • 类型:形参注解
  • 位置:SpringMVC控制器方法形参前面
  • 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名相同
  • 范例:
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable int id) {
        System.out.println("use delete..." + id);
        return "'module':'user delete'";
    }

  • 区别:
  • @RequestParam用于接收url地址传参或表单传参
  • @ResponseBody用于接收json数据
  • @PathVariable用于接收路径参数,使用(参数名称)描述路径参数
  • 应用:
  • 后期开发中,发送请求参数超过1个小时,以json格式为主, @ResponseBody应用较广
  • 如果发送非json格式数据,选用 @RequestParam接收请求参数
  • 采用RESTful进行开发,当参数数量较少时,例如一个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

三、RESTful快速开发

3.1RestController注解

  • 名称:@RestController
  • 类型:类注解
  • 位置:基于SpringMVC的RESTful开发控制器类定义上方
  • 作用:设置当前控制器为RESTful风格,等同于@Controller@ResponseBody两个注解组合功能
  • 范例:
@RestController
@RequestMapping("/address")
public class BookController {
}

3.2方法注解

  • 名称:@GetMapping@PostMapping@DeleteMapping@PutMapping
  • 类型:方法注解
  • 位置:基于SpringMVC的RESTful开发控制器方法定义上方
  • 作用:设置当前控制器方法请求路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
  • 范例:
@RestController
@RequestMapping("/address")
public class BookController {
    @GetMapping
    public String save() {
        System.out.println("use save...");
        return "'module':'user save'";
    }
    @DeleteMapping
    public String delete() {
        System.out.println("use delete...");
        return "'module':'user delete'";
    }
    //修改
    @PutMapping
    public String update(@RequestBody Address address) {
        System.out.println("use update..." + address);
        return "'module':'user update'";
    }
    @GetMapping("{id}")
    public String getById(@PathVariable int id){
        System.out.println("address getById..." + id);
        return "'module':'address getById'";
    }
}
  • value:默认访问路径

总结

通过这篇文章,基于SpringMVC的RESTful快速开发就介绍到这里了,欢迎各位小伙伴点赞+关注!!!

相关文章
|
1天前
|
安全 Java API
Java一分钟之-Spring Data REST:创建RESTful服务
【6月更文挑战第15天】Spring Data REST让基于Spring Data的项目轻松创建REST API,免去大量控制器代码。通过自动HTTP映射和链接生成,简化CRUD操作。文章涵盖启用REST、配置仓库、自定义端点、解决过度暴露、缺失逻辑和安全性问题,提供代码示例,如自定义Repository、投影和安全配置,强调在利用其便利性时注意潜在挑战。
16 5
|
1天前
|
安全 API 网络架构
构建高效的RESTful API:后端开发的最佳实践
【6月更文挑战第14天】在数字化时代,RESTful API是连接不同软件系统和促进数据交换的关键。本文将深入探讨如何设计、实现和维护一个高效、可扩展且安全的RESTful API,确保后端服务的响应性、可靠性和安全性。
|
17天前
|
JavaScript API 数据处理
构建高效可扩展的RESTful API:后端开发实践指南
【5月更文挑战第30天】在数字化转型和移动应用日益普及的背景下,构建一个高效、可扩展且易于维护的RESTful API对于后端开发者来说至关重要。本文将深入探讨设计RESTful API的最佳实践,包括如何选择合适的技术栈、实现高效的数据处理以及确保API安全性。通过阅读本文,您将了解如何从零开始构建一个高性能的后端系统,同时保证其在未来可以轻松适应业务需求的变化。
|
19天前
|
存储 JSON 前端开发
利用Spring MVC开发程序2
利用Spring MVC开发程序
23 1
|
19天前
|
设计模式 JSON 前端开发
利用Spring MVC开发程序1
利用Spring MVC开发程序
22 0
|
1月前
|
设计模式 前端开发 JavaScript
Spring MVC(一)【什么是Spring MVC】
Spring MVC(一)【什么是Spring MVC】
|
1月前
|
Java Apache vr&ar
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
springmvc报错 nested exception is org.mybatis.spring.MyBatisSystemException:
20 0
|
8月前
|
前端开发 Java Go
Spring MVC 和 Spring Boot 的区别
Spring MVC 和 Spring Boot 的区别
131 0
|
11月前
|
Java Spring
springmvc中spring提供的中文乱码解决问题
可以解决浏览器的乱码问题
51 0
|
11月前
|
JSON 前端开发 Java
"《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(一) "
"《图书管理系统》利用SpringMvc$Spring$MyBatis (实操九)(一) "
66 0