首页 > 其他分享 >RestFul API风格(规范)

RestFul API风格(规范)

时间:2024-05-22 21:23:01浏览次数:23  
标签:请求 规范 API 服务器 操作 RestFul 资源 客户端

 

  在现代 web 开发中,API(应用程序编程接口)扮演着至关重要的角色。它们使得不同的应用程序能够彼此通信,共享数据和功能。在众多 API 设计风格中,RESTful 风格因其简洁性和高效性而备受推崇。本文将带你深入了解 RESTful 风格,探索其基本原则和最佳实践。

 

1. 什么是 RESTful 风格?

  REST(Representational State Transfer,表述性状态转移)是一种架构风格,用于设计网络应用程序。由 Roy Fielding 在他的博士论文中提出,REST 强调了使用简单的 HTTP 协议来进行通信,并使用一致的资源标识符(URI)来操作资源。

  RESTful 风格的核心思想是将系统的功能视为一组资源,并通过标准的 HTTP 动词(如 GET、POST、PUT、DELETE)对这些资源进行操作。

2. 使用规定

  •  GET:对应 SELECT 操作  GET 请求用于从服务器查询资源。它通常对应数据库中的 SELECT 操作,可以在服务器通过请求的参数区分查询的方式。
  •  POST:对应 CREATE 操作  POST 请求用于在服务器新建一个资源,对应数据库中的 INSERT 操作。
  •  PUT:对应 UPDATE 操作  PUT 请求用于在服务器更新资源,对应数据库中的 UPDATE 操作。它通常用于更新整个资源。
  •  PATCH:对应部分更新操作  PATCH 请求用于在服务器部分更新资源,对应数据库中的部分 UPDATE 操作。客户端只需提供需要更改的属性。

    注意:由于一些旧版 JDK 和 Tomcat 不支持 PATCH 请求,可能需要额外配置或升级。

  • DELETE:对应 DELETE 操作DELETE 请求用于从服务器删除资源,对应数据库中的 DELETE 操作。

 

3. RESTful 风格的基本原则

  资源的唯一标识:每个资源都有一个唯一的 URI。例如,/users/123 表示 ID 为 123 的用户。

  无状态交互:每次客户端请求必须包含完成该请求所需的所有信息。服务器不会存储客户端的状态,这使得每个请求都可以独立处理。

  统一接口:使用标准的 HTTP 动词来操作资源。GET 用于获取资源,POST 用于创建资源,PUT 用于更新资源,DELETE 用于删除资源。

  表述(Representation):客户端和服务器之间交换资源的表述,例如 JSON 或 XML。客户端可以根据需要转换这些表述。

  可扩展性:通过超媒体(HATEOAS,Hypermedia As The Engine Of Application State)来实现。客户端在请求资源时,服务器会提供相关链接,使客户端能够发现和操作更多资源。

  构建 RESTful API 的最佳实践

  明确的命名规范:使用名词来命名资源,而不是动词。例如,使用 /users 而不是 /getUsers。

  合理使用 HTTP 状态码:例如,成功的 GET 请求返回 200 OK,创建资源的 POST 请求返回 201 Created,资源未找到时返回 404 Not Found。

  分页和过滤:对于返回大量数据的请求,提供分页、排序和过滤功能。例如,使用 /users?page=2&limit=10 来分页。

  版本控制:为 API 提供版本控制,以确保向后兼容性。例如,使用 /v1/users 来表示第一个版本的用户资源。

  安全性:使用 HTTPS 来确保数据传输的安全性,使用 OAuth 或 JWT 进行身份验证和授权。 

 

 

 

 

标签:请求,规范,API,服务器,操作,RestFul,资源,客户端
From: https://www.cnblogs.com/warmNest-llb/p/18207079

相关文章

  • APIO2024 游记
    5.21才写的,有些可能记不起来了。Day0白天抽机,下午很困,晚上去了西湖,景色很美。很晚吃的饭,很饿。Day1入住新酒店,且学校伙食明显好了很多。下午晚上筹集。Day2早上是gyr讲课,下午是两名国家队成员讲课。积性函数和wc差不多,很无聊,组合计数还行。Day3早上试机,十点开......
  • Lua常用C Api接口
    Lua5.4是Lua语言的一个版本,它提供了许多CAPI函数,这些函数允许开发者在C语言中嵌入和扩展Lua的功能。以下是一些常用的Lua5.4CAPI函数,以及它们的简单示例:lua_newstate-创建一个新的Lua状态。lua_State*L=lua_newstate(0,0);//创建一个新的Lua状态......
  • THUSC & APIO2024 - 无题
    2024.05.09明天要飞宁波了,今天晚上机房几乎没有老师,颓废人数达到巅峰(换言之,根据我的观察,只有xzj和ly没有颓废过)。所以说应该放松一下。今天真的做了很多题!!!2024.05.10早上坐飞机从江北机场飞到栎社机场。在出发前遇到了jjh,跟他打招呼,他竟然没有回应我,愤慨!接着从机场坐地铁......
  • .net webapi 处理前端请求跨域问题
    1.打开 Program.cs文件,在 varapp=builder.Build();语句前添加如下代码builder.Services.AddCors(o=>o.AddPolicy("any",p=>p.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()));2.在varapp=builder.Build();语句后添加 app.UseCors();app.UseCors();......
  • 基于webapi的websocket聊天室(番外一)
    上一篇我已经实现了聊天室,并且在协议中实现了4种类型的消息传输。其实还可以添加video,audio,live等等类型。不过假如把目前的协议看作RCP1.0版的话,这个版本就只支持有限的4种消息。精力有限啊。也许RCP2.0就可以把video,audio类型加进去?这不是这篇番外考虑的。而是我在定义和实现......
  • 节省时间,使用企业联系方式API接口!
     在现代高速发展的商业环境下,了解其他企业的联系方式是非常重要的。你可能需要与其他企业进行商业合作,或者需要获取其他企业的相关信息。而传统的方式需要耗费大量时间和精力,因此我们为您推荐使用我们的企业联系方式API接口,帮助您快速获取企业联系方式信息。我们的API接口可以......
  • 全国霸王餐API接口,饿了么霸王餐API接口 免费对接中
    接口地址:https://open.wikeyun.cn/#/apiDocument/32/document/550 --- 支持全国50+城市,美团、饿了么都支持。联合跑单 store_idint是1店铺IDmobilestring是 手机号latstring是 用户位置坐标纬度lngstring是......
  • APIO 2024 游记
    干的全是无意义事,所以写的游记也是无意义内容,感觉真是纯游了。标题怎么这么短?原来是技不如人清北营全都去不了,只能打这种花钱的没用比赛,哈哈......
  • .Net6 web API (跨域请求 Vue项目)
    前沿在做新项目的时候跨域2中选择一种是,.net .net //添加跨域策略builder.Services.AddCors(options=>{options.AddPolicy("CorsPolicy",opt=>opt.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().WithExposedHeaders("X-Pagina......
  • 【APIM】Azure APIM抛出 java.lang.RuntimeException 错误定位
    问题描述AzureAPIM服务日志中发现java.lang.RuntimeException错误,在进一步通过ApplicationInsights采集的错误信息日志,发现真实的请求错误为:‘Theremotenamecouldnotberesolved'xxxx.xxx.xx'"。 问题解答APIM服务,在没有配置自定义的DNS服务器时,默认会使用Azure平......