SpringBoot --------- 接口架构风格 RESTful
Posted 在森林中麋了鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot --------- 接口架构风格 RESTful相关的知识,希望对你有一定的参考价值。
目录
一、认识 REST
REST (英文:Representational State Transfer,简称 REST,中文:表现层状态转换)。
一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁、更有层次。
REST这个词,是 Roy Thomas Fielding 在他 2000 年的博士论文中提出的。
任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构。
比如我们要访问一个 http 接口 :http://localhost:8080/boot/order?id=1021&status=1 。
采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1 。
二、RESTful 的 注解
SpringBoot 开发 RESTful 主要是几个注解的实现
- @PathVariable
获取 url 中的数据,该注解是实现 RESTful 的最重要的一个注解
- @PostMapping
接收和处理 Post 方式的请求
- @DeleteMapping
接收 delete 方式的请求,作用是删除数据,可以用 GetMapping 代替
- @PutMapping
接收 put 方式的请求,作用是添加数据,可以用 PostMapping 代替
- @GetMapping
接收 get 方式的请求
三、RESTful 优点
-
轻量,直接基于 http,不再需要任何别的诸如消息协议 get/post/put/delete 为 CRUD 操作。
-
面向资源,一目了然,具有自解释性。
-
数据描述简单,一般以 xml,json 做数据交换。
-
无状态,在调用一个接口 (访问、操作资源) 的时候,可以不用考虑上下文,不用考虑当前状态,极大的降低了复杂度。
-
简单、低耦合。
四、注解练习
controller 类
package com.fancy.springbootmybatis.controller;
import org.springframework.web.bind.annotation.*;
@RestController
public class MyRestController
// get 请求
/* rest 中, url 要使用占位符, 表示传递的数据
占位符叫做路径变量, 用来获取在 url 中的数据
格式 : 在 @RestMapping 的value 属性值中, 使用 自定义名称
http://localhost:8080/myweb/student/1001/hihi
*/
/* @PathVariable: 路径变量注解, 作用是获取 url 中的路径变量的值
属性 : value 路径变量名称
位置 : 在逐个接收参数中, 在形参定义的前面
注意 : 路径变量名和形参名一样, value可以不选
*/
@GetMapping(value = "/student/studentId/classname")
public String queryStudent(@PathVariable(value="studentId") Integer id, @PathVariable String classname)
return "get 请求, 查询学生 studentId : " + id + ", 班级: " + classname;
@GetMapping(value = "/student/studentId/school/schoolname")
public String queryStudentBySchool(@PathVariable(value = "studentId") Integer id, @PathVariable String schoolname)
return "get 请求, 查询学生 studentId :" + id + ", 班级 : " +schoolname;
@PostMapping("/student/stuId")
public String createStudent(@PathVariable("stuId") Integer id, String name, Integer age)
return "post 创建学生, id=" + id + ", name=" + name + ", age=" + age;
@PutMapping("/student/stuId")
public String modifyStudent(@PathVariable("stuId") Integer id, String name)
System.out.println("======== put 请求 =========");
return "put 修改学生, id = " + id + ", 修改的名称是: " + name;
@DeleteMapping("/student/stuId")
public String removeStudent(@PathVariable("stuId") Integer id)
System.out.println("======= delete 请求方式 ========");
return "delete 删除学生, id=" + id;
application.properties 文件
请求路径冲突
@GetMapping(value = "/student/studentId/classname")
@GetMapping(value = "/student/studentId/schoolname")
这样的路径访问会失败, 路径有冲突
解决:设计路径,必须唯一, 路径 uri 和 请求方式 必须唯一。
五、HTTP Client 工具
使用 IDEA HTTP Client 模拟发送请求,进行测试
Tools —> HTTP Clients —> Create Request in HTTP Client
在页面内对请求地址进行修改,然后点击运行
运行结果
添加请求
put 请求可以通过 post 请求转换得到
六、RESTful 总结
请求 | 功能 |
---|---|
post 请求 | 增 |
delete 请求 | 删 |
put请求 | 改 |
get请求 | 查 |
- 请求路径不要出现动词
例如 :查询订单接口
/boot/order/1021/1 (推荐)
/boot/queryOrder/1021/1 (不推荐)
- 分页、排序等操作,不需要使用斜杠传参数
例如 :订单列表接口
/boot/orders?page=1&sort=desc
一般传的参数不是数据库表的字段,可以不采用斜杠
曝iPhone15或换用USB-C接口;Google将下架第三方Android通话录音APP|极客头条
「极客头条」—— 技术人员的新闻圈!
CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。
整理 | 梦依丹
出品 | CSDN(ID:CSDNnews)
一分钟速览新闻点!
-
华为智能汽车黑匣子数据专利获授权
-
搜狗地图宣布5月15日正式下线
-
理想汽车回应“校招生被拒”:因业务有调整,提供调岗或解约赔偿
-
一年一度阿里亲友日,马云现身和员工聊了聊公益和农业
-
曝iPhone15或换用USB-C接口
-
苹果屏下指纹识别专利已获授权,使用光纤可更精准、更快速采集指纹数据
-
AMD前高管加盟英特尔:担任企业发展部门高级副总裁
-
马斯克夸赞中国工人勤奋,称中国会出现一些非常强大的公司
-
Google将下架第三方Android通话录音APP
-
苹果获得车辆操作安全新专利:iPhone可在用户开车时自动回复消息
-
.NET 7 的第四个预览版发布
-
Fedora 36 发布
国内要闻
华为智能汽车黑匣子数据专利获授权
近日,华为技术有限公司申请的“智能驾驶汽车中黑匣子数据的管理方法、装置和设备”专利获得授权。摘要显示,本申请中的黑匣子设备根据黑匣子触发事件获取黑匣子数据,然后根据事件类型和数据类型评估数据的存储级别;再根据存储级别和预置规则存储数据,以此满足智能驾驶汽车中黑匣子数据的记录和存储,提升黑匣子数据的有效性和智能驾驶汽车的安全性。
搜狗地图宣布5月15日正式下线
从搜狗地图官网获悉,搜狗地图将于2022年5月15日23点正式下线,届时关闭所有相关服务。在公告中,官方还推荐下载腾讯地图,可为用户提供更好的服务。(快科技)
理想汽车回应“校招生被拒”:因业务有调整,提供调岗或解约赔偿
5月11日,有用户在脉脉等平台透露,理想汽车在5月毁约了2022年毕业的校招生,其中不少人已经和理想汽车、学校签署了三方协议,准备等着毕业答辩结束后入职。对此,理想汽车回应称,近期理想汽车进行了业务调整,部分岗位被关闭,涉及部分今年尚未入职的校招生伙伴。鉴于可能对这些学生重新找工作造成的不便,理想汽车提供了调岗选择和解约赔偿的方案,目前正在与相关学生进行沟通。
一年一度阿里亲友日,马云现身和员工聊了聊公益和农业
据公益时报发布,5月10日是阿里亲友日。有员工在阿里巴巴内网发帖,当天,马云在阿里园区和部分一线员工就公益及农业话题进行了交流。据媒体报道,去年510当天马云也曾来到阿里园区,参观员工公益项目的展示摊位,这也是他停留时间最长的地方。(IT之家)
国际要闻
曝iPhone15或换用USB-C接口
据天风国际分析师郭明錤消息,其最新的研究认为苹果将在2023年下半年抛弃Lightning接口,换用USB-C接口。也就是说iPhone 15系列将成为首批采用USB-C接口的iPhone机型。(新浪科技)
苹果屏下指纹识别专利已获授权,使用光纤可更精准、更快速采集指纹数据
美国专利商标局正式授权苹果一项专利,该专利显示通过在屏下使用光纤,可以以更高的速率和精度采集指纹数据。苹果专利指出,可能需要捕获靠近设备的对象或用户的二维 (2D) 或三维 (3D) 图像。在某些情况下,2D或3D图像可以是指纹、面部或视野 (FoV) 中场景的图像。专利还涵盖了针对使用光纤或光纤束的光学传感的系统、设备、方法和装置,特别是针对近距离显示的光学传感。(铁骥科技频道)
AMD前高管加盟英特尔:担任企业发展部门高级副总裁
英特尔宣布,任命Matt Poirier担任企业发展部门高级副总裁,自2022年5月30日起生效。据悉,Poirier曾担任AMD战略和企业发展高级副总裁;加入AMD之前,Poirier曾在赛灵思担任公司发展和投资者关系高级副总裁。”
马斯克夸赞中国工人勤奋,称中国会出现一些非常强大的公司
特斯拉CEO马斯克周二赞扬中国工人勤奋,并表示相比之下,美国工人试图“完全避免去上班”。当被问及特斯拉在电动汽车行业的最大竞争对手是谁时,这位身为世界首富的企业家发表了上述评论。马斯克随后表示,未来最大的竞争将来自中国,特斯拉在那里拥有新的制造工厂。“我认为中国会出现一些非常强大的公司,中国有很多超级有才华、勤奋的人,他们真的相信制造业。”他称:“他们不仅会熬夜,凌晨三点也会兢兢业业的工作,他们甚至不会离开工厂。而美国工人则尽量不去上班。
Google将下架第三方Android通话录音APP
近日,Google表示,新修订的Play商店政策将于5月11日起生效,之后所有通话录音类APP都将下架。Google给出的理由是出于隐私与安全性的考量(不同市场区域的法律规定也不尽相同),Google之前一直在悄然地剔除多个Android系统版本上的通话录音API。对于内置通话录音功能的Android ROM,Google表示:“如果原生拨号器应用已经预先提供了通话录音功能,无需借助可访问性功能(Accessibility API)来访问传入音频并不违法Google Play的新政策。”(爱范儿)
苹果获得车辆操作安全新专利:iPhone可在用户开车时自动回复消息
据报道,苹果目前已经申请了多项与智能汽车相关的专利。其中一项专利图显示,当用户在开车时,iPhone 手机将自动回复“JOHN(用户名称)当前正在开车”,似乎会检测用户的车速,从而开启自动回复功能,来通知发送者接收者正在驾驶。(新浪科技)
程序员专区
.NET 7 的第四个预览版发布
5月10日,.NET官方博客发布.NET 7第四个预览版,该版本增强了OpenTelemetry在.NET实现中的可观察性,增加了跟踪日期和时间结构中的微秒和纳秒的属性,用于缓存扩展的新指标,提高性能的 "on stack replacement",与.tar档案一起工作的API,以及提高.NET 7的正则表达式性能等功能,更多详情及各个功能代码介绍,可访问官网发布说明:https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-preview-4/
Fedora 36 发布
Fedora 36 正式发布,该版本涉及的功能更新有:桌面环境GNOME 42、使用英伟达的系统默认支持 Wayland,Podman 4.0、 Ansible 5、移除对遗留的 ifcfg 配置文件的支持,GCC 12,轻量级桌面环境 LXQt 更新到了 1.0 版本,更多详情可查看发布说明:https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/
以上是关于SpringBoot --------- 接口架构风格 RESTful的主要内容,如果未能解决你的问题,请参考以下文章
php接口限流和熔断,担心因为接口设置访问量过大而导致接口堵塞,请问是不是有第三方架包或者方法可以实现
曝iPhone15或换用USB-C接口;Google将下架第三方Android通话录音APP|极客头条