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

Restful风格详解

Restful风格的描述与解释

转载:https://www.cnblogs.com/letsdaydayup/p/14441123.html


文章目录

  • Restful风格的描述与解释
  • 一、什么是Restful风格?
  • 二、Restful的特点
  • 实现
    • 1、使用RESTful风格url
    • 2、url不变,使用method属性区分
    • 3、直接使用使用@GetMapping、@PostMapping(等价于使用指定形式的@RequestMapping)
  • Restful风格的优点总结


一、什么是Restful风格?

Restful风格指的是网络应用中就是资源定位和资源操作的风格。不是标准也不是协议。
Rest即Representational State Transfer的缩写,可译为"表现层状态转化”。Restful风格最大的特点为:资源、统一接口、URI和无状态。
这种风格设计的软件,可以更简洁,更有层次,更易于实现缓存等机制。

二、Restful的特点

资源:互联网所有的事务都可以被抽象为资源,例如:.txt .html .jpg .mp3 .mp4等
RESTful 架构风格是围绕资源展开的,资源操作都是统一接口的:
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。
PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)。
DELETE(DELETE):从服务器删除资源。
URI:每一个URI(统一资源定位符)指向一个特定的资源。通过URI来访问资源。最典型的URI就是URL。@RequestMapping的path/value属性表示的就是URL的一部分。
无状态:
所有的资源,都可以通过URI定位,而且这个定位与其他资源无关。例如无需登录就可以通过URL查看,就是无状态。需要登录才能查看,是有状态。

实现

1、使用RESTful风格url

传统url:http://localhost:8080/h1?a=1&b=11

RESTful:http://localhost:8080/h2/1/11

@PathVariable 用于修饰方法传入参数,表示该参数值从请求路径中获取

@RequestMapping(“h2/{a}/{b}”) /{a}/{b}:表示要传入的参数值,在请求url中用斜线/分隔多个参数。


```java
@Controller
public class RESTfulController {//传统方式:http://localhost:8080/h1?a=1&b=11@RequestMapping("h1")public String test1(int a, int b , Model model){int rslt=a+b;model.addAttribute("msg", "结果为:"+rslt);return "hello";}//RESTful:http://localhost:8080/h2/1/11@RequestMapping("h2/{a}/{b}")public String test2(@PathVariable int a, @PathVariable int b , Model model){int rslt=a+b;model.addAttribute("msg", "结果为:"+rslt);return "hello";}
}

2、url不变,使用method属性区分

@RequestMapping的请求路径用value或path属性表示
@RequestMapping的method属性表示请求方式,例如:POST、GET等。

@RequestMapping(value = "h3/{a}/{b}",method = RequestMethod.GET)
public String test3(@PathVariable int a, @PathVariable int b , Model model){int rslt=a+b;model.addAttribute("msg", "get结果为:"+rslt);return "hello";
}@RequestMapping(value = "h3/{a}/{b}",method = RequestMethod.POST)
public String test4(@PathVariable int a, @PathVariable int b , Model model){int rslt=a+b;model.addAttribute("msg", "post结果为:"+rslt);return "hello";
}

请求路径都为http://localhost:8080/h3/1/11

默认为GET方式请求,走入method为get的分支

在这里插入图片描述
使用表单提交POST请求
​ 点击提交后,走入method为post的分支
在这里插入图片描述
在这里插入图片描述

3、直接使用使用@GetMapping、@PostMapping(等价于使用指定形式的@RequestMapping)

@GetMapping:@RequestMapping(method = RequestMethod.GET)的快捷方式
@PostMapping:@RequestMapping(method = RequestMethod.POST)的快捷方式

@GetMapping("h3/{a}/{b}")
public String test5(@PathVariable int a, @PathVariable int b , Model model){int rslt=a+b;model.addAttribute("msg", "get结果为:"+rslt);return "hello";
}@PostMapping( "h3/{a}/{b}")
public String test6(@PathVariable int a, @PathVariable int b , Model model){int rslt=a+b;model.addAttribute("msg", "post结果为:"+rslt);return "hello";
}

Restful风格的优点总结

使请求路径变得更加简洁

传递、获取参数值更加方便,框架会自动进行类型转换

通过路径变量@PathVariable的类型,可以约束访问参数。

若参数值与定义类型不匹配,则访问不到对应的方法,报错400错误的请求。
安全,请求路径中直接传递参数值,并用斜线/分隔,不会暴露传递给方法的参数变量名。

高效,更易于缓存的实现,让响应更加高效。

http://www.lryc.cn/news/2417693.html

相关文章:

  • 一文带你了解SOA接口测试
  • stack overflow异常分析及解决办法
  • Hdfs(五)DataNode
  • PNG文件格式详解
  • phoenix 使用技巧
  • Lombok常用注解总结
  • (P33-P35)lambda表达式语法,lambda表达式注意事项,lambda表达式本质
  • mariaDB(mysql数据库)-安装配置和使用
  • 理解:QPS、TPS、RT、吞吐量
  • MinGW安装教程
  • Java中 static 关键字相关的用法
  • ADB 安装 + 打驱动全教程
  • 不同的存储库(Repository)模式实现
  • 开源项目 `signature` 使用教程
  • GCC详解-Binutils工具之strip
  • 消息传递机制之Handler使用总结
  • 一分钟快速过安卓四大组件——Activity篇
  • 2024年最新GIMP(Linux下的Photoshop)-KOS安装教程_linux photoshop
  • 19 张图概览 Spring Cloud(收藏夹吃亏系列)
  • linux后台运行nohup | 进程查看、终止 | linux基础命令记录
  • Mybatis-Plus理解及使用
  • 前端进阶之路——域名(domain)
  • win11下配置visual studio 2022+PCL1.13.0
  • 50个常用的 Numpy 函数详解!
  • kali简介
  • Java | final关键字快速上手【通俗易懂,看这篇就够了】
  • UUID介绍与生成方法
  • fps游戏战斗相关漫谈(五)
  • 安卓工程师必须了解的Gradle知识
  • ASCII码对照表(包括十六进制、十进制和字符)