Spring MVC——Rest风格

这篇具有很好参考价值的文章主要介绍了Spring MVC——Rest风格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

REST(Representational State Transfer)

  • 当我们想表示一个网络资源的时候,可以使用两种方式:
    我们分别用查询id为1的用户信息保存用户信息举例
  • 传统风格资源描述形式
    • http://localhost/user/getById?id=1
    • http://localhost/user/saveUser
  • REST风格描述形式
    • http://localhost/user/1
    • http://localhost/user

对比很明显吧,传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为我们可以通过读取请求url地址,就大概知道该url实现的是一个什么样的操作。而REST风格的描述,请求地址变的简单了,并且光看请求URL并不能猜出来该URL的具体功能,总结一下无非两个优点:

  • 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
  • 书写简化

随之而来我们又有了一个新的问题,一个相同的url地址即可以是新增也可以是修改或者查询,那么到底我们该如何区分该请求到底是什么操作。

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

请求的方式比较多,但是比较常用的就4种,分别是GET:用来做查询,POST:用来做新增,PUT:用来做修改,DELETE:用来做删除。

注意注意注意注意

  • 上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
    • REST提供了对应的架构方式,按照这种架构设计项目可以降低开发的复杂性,提高系统的可伸缩性
    • REST中规定GET/POST/PUT/DELETE针对的是查询/新增/修改/删除,但是我们如果非要用GET请求做删除,这点在程序上运行是可以实现的
  • 但是如果绝大多数人都遵循这种风格,你写的代码让别人读起来就有点莫名其妙了。
  • 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts…

既然清楚了什么是REST风格后,现在我们提一个新的概念RESTful根据REST风格对资源进行访问称为RESTful

对比一下请求吧一个是放在页面url路径里,一个是使用一些请求参数方法修改
Spring MVC——Rest风格

名称 @PathVariable
类型 形参注解
位置 SpringMVC控制器方法形参定义前面
作用 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

关于接收参数,三个注解@RequestBody@RequestParam@PathVariable

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

其实我们实际开发REST风格并没有这么繁琐,我们看个例子就很明显了:文章来源地址https://www.toymoban.com/news/detail-450011.html

package com.taro.controller;

import com.taro.domain.Book;
import org.springframework.web.bind.annotation.*;

//@Controller
//@ResponseBody配置在类上可以简化配置,表示设置当前每个方法的返回值都作为响应体
//@ResponseBody
@RestController     //使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
@RequestMapping("/books")
public class BookController {

//    @RequestMapping( method = RequestMethod.POST)
    @PostMapping        //使用@PostMapping简化Post请求方法对应的映射配置
    public String save(@RequestBody Book book){
        System.out.println("book save..." + book);
        return "{'module':'book save'}";
    }

//    @RequestMapping(value = "/{id}" ,method = RequestMethod.DELETE)
    @DeleteMapping("/{id}")     //使用@DeleteMapping简化DELETE请求方法对应的映射配置
    public String delete(@PathVariable Integer id){
        System.out.println("book delete..." + id);
        return "{'module':'book delete'}";
    }

//    @RequestMapping(method = RequestMethod.PUT)
    @PutMapping         //使用@PutMapping简化Put请求方法对应的映射配置
    public String update(@RequestBody Book book){
        System.out.println("book update..."+book);
        return "{'module':'book update'}";
    }

//    @RequestMapping(value = "/{id}" ,method = RequestMethod.GET)
    @GetMapping("/{id}")    //使用@GetMapping简化GET请求方法对应的映射配置
    public String getById(@PathVariable Integer id){
        System.out.println("book getById..."+id);
        return "{'module':'book getById'}";
    }

//    @RequestMapping(method = RequestMethod.GET)
    @GetMapping             //使用@GetMapping简化GET请求方法对应的映射配置
    public String getAll(){
        System.out.println("book getAll...");
        return "{'module':'book getAll'}";
    }
}

名称 @RestController
类型 类注解
位置 基于SpringMVC的RESTful开发控制器类定义上方
作用 设置当前控制器类为RESTful风格,
等同于@Controller与@ResponseBody两个注解组合功能
名称 @GetMapping @PostMapping @PutMapping @DeleteMapping
类型 方法注解
位置 基于SpringMVC的RESTful开发控制器方法定义上方
作用 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,
例如@GetMapping对应GET请求
相关属性 value(默认):请求访问路径

到了这里,关于Spring MVC——Rest风格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • javaee springMVC Rest风格和Ant风格

    2024年02月09日
    浏览(39)
  • Rest风格复习

    通过一段路径和访问方式来确定访问资源的行为方式 使用POST方式 使用DELETE方式 @RequestParam用于接受url地址传参或者表单传参 @RequestBody用于接受json数据 @PathVariable用于接受路径参数,使用{参数名称}描述路径参数 如果发送请求参数超过一个,以json格式为主 如果发送非json个数数

    2024年02月03日
    浏览(31)
  • Rest风格

    一、REST简介 REST (Representational State Transfer),表现形式状态转换,它是一种软件架构 风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描述形式 http://localhost/user/getById?id=1 查询id为1的用户信息 http://localhost/user/saveUser 保存用户信息 REST风格描述形式

    2023年04月15日
    浏览(30)
  • Rest风格基本语法与实战

    在getUserById方法上,我们使用@GetMapping(“/{id}”)将方法与URL路径/books/{id}进行映射。{id}表示一个占位符,它对应URL路径中的实际值。 然后,我们在方法参数上使用@PathVariable注解,将id参数与URL路径中的实际值进行绑定。Spring MVC会自动提取URL路径中的相应部分,并将其作为参数

    2024年02月07日
    浏览(34)
  • REST风格 -- SpringMVC入门保姆级教程(四)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月06日
    浏览(42)
  • RESTful:理解REST架构风格、RESTful API

    一、REST架构风格 REST(英文Representational State Transfer)是一种基于客户端和服务器的架构风格,用于构建可伸缩、可维护的Web服务。REST的核心思想是,将Web应用程序的功能作为资源来表示,使用统一的标识符(URI)来对这些资源进行操作,并通过HTTP协议(GET、POST、PUT、DELET

    2024年02月07日
    浏览(43)
  • Rest 优雅的url请求处理风格及注意事项

    😀前言 本篇博文是关于Rest 风格请求的应用和注意事项,希望能够帮助到您😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家

    2024年02月13日
    浏览(38)
  • (Rest风格API)Elasticsearch索引操作、映射配置、数据操作、查询操作

    1.请求方式:put 2.请求路径:索引库名 3.请求参数:json格式 number_of_shards 是指索引要做多少个分片,只能在创建索引时指定,后期无法修改。 number_of_replicas 是指每个分片有多少个副本,后期可以动态修改 什么是分片? ES中所存数据的文件块,也是数据的最小单元块。假如有

    2024年04月26日
    浏览(47)
  • SpringMVC简介、请求与响应、REST风格、SSM整合、拦截器

    目录 SpringMVC简介 SpringMVC概述 入门案例 入门案例工作流程分析 Controller加载控制 PostMan 请求与响应 设置请求映射路径 五种类型参数传递 JSON数据传输参数  JSON对象数据 JSON对象数组 日期类型参数传递  响应  REST风格 REST风格简介 RESTful入门案例 RESTful快速开发 RESTful案例 SSM整

    2024年02月05日
    浏览(55)
  • 【风格迁移-论文笔记12.20】Arbitrary style transfer based on Attention and Covariance-Matching

    任意风格迁移(Arbitrary style transfer)具有广阔的应用前景和重要的研究价值,是计算机视觉领域的研究热点。许多研究表明,任意风格迁移取得了显着的成功。 然而,现有的方法可能会产生伪影(artifacts),有时会导致内容结构的失真(distortion)。 为此,本文提出一种新颖

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包