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|极客头条

超赞!这款基于SpringBoot + Dubbo打造的在线IM系统功能丰富(附源码)

springboot学习笔记

Springboot-JDBCTemplate

SpringBoot+Spring Batch+Oracle