对restful 规范的理解

本文介绍了REST架构的基本概念、特点及其实现方式。REST是一种客户端与服务器间交互的设计风格,强调具象状态传输,通过标准HTTP方法操作资源。文章还详细说明了RESTful API的设计规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

REST:Representational State Transfer的缩写,翻译为“具象状态传输”,一般解释为“表现层状态转换”。它是Roy Tomas Fielding博士提出的一种软件应用的架构风格。REST是设计风格而不是标准,是指客户端和服务器的交互形式。
REST的特点:
1.具象的。一般指表现层,要表现的对象就是资源。
2.表现:资源的表现形式,txt格式、html格式、json格式、JPG格式等,浏览器通过URL确定资源的位置,但是需要在HTTP请求头中,用A车平台和Content-Type字段指定,这两个字段是对资源的表现描述
3.状态转换:客户端和服务器交互的过程,在这个过程中,一定会有数据和状态转换,这就是状态转换,其中GET表示获取资源,POST表示新建资源,PUT表示更新资源,DELETE表示删除资源,这是HTTP协议中最常用的四种操作方式。

  • REST架构
  • 每个URL代表一种资源
  • 客户端和服务器之间,传递这种资源的某种表现层
  • 客户端通过GET,POST,PUT,DELETE这四个动词,对服务器资源进行操作,实现表现层的状态转换。

具体要求:
1.域名:
将api部署在专用域名下或者主域名下

127.0.0.1:5000/api/goods
#GET 查询
#POST 创建资源
#PUT 更新资源
#DELETE 删除

2.版本
将api的版本放在URL中

127.0.0.1:5000/api/v1_0/goods
http://www.example.com/app/1.0/info
http://www.example.com/app/1.1/info

3.路径
路径表示api的具体网址,每个网址代表一种资源,资源作为网址,网址中不能有动词只能有名词,一般名词要与数据库的表名对应,而且名词要使用复数。
错误示例:

http://www.example.com/getGoods

正确示例:

#获取单个商品
http://www.example.com/app/goods/1
#获取所有商品
http://www.example.com/app/goods

4.使用标准的HTTP方法:

GET
POST
PUT
DELETE

5.过滤信息

#指定返回数据的数量
http://www,example.com/goods?limit=10
#指定返回数据的开始位置
http://www.example.com/goods?offsest=10
#指定第几页已经每页数据的数量
http://www.example.com/goods?page/page=2&per_page=20

6.状态码
常用的状态码有:

200 OK 服务器成功返回用户请求的数据
201 CREATED 用于新建或者修改数据成功
202 ACCEPTED 表示请求已经进入后台排队
400 INVALID REQUEST 用户发出的请求有错误
401 Uuanthorized 用户没有权限
403 Forbidden 访问被禁止
404 NOT FOUND 请求不存在的记录
500 INTERNAL SERVER ERROR 服务器发生错误

7.错误信息
一般来说,服务器返回的错误信息,以键值对的形式返回
8.返回数据类型
服务器返回的数据类型,尽量使用JSON格式,避免使用XML

### 三级标题:RESTful 的基本概念 RESTful 是一种基于 HTTP 协议的 API 设计风格,它通过 URL、HTTP 动词和状态码等约定来实现客户端与服务器端的通信。其核心思想是将资源作为系统的核心抽象,每一个 URI 代表一种资源,客户端和服务器之间传递这种资源的某种表现层,而客户端通过 GET、POST、PUT、DELETE 等 HTTP 动词对服务器端资源进行操作,从而实现“表现层状态转化”[^4]。 在 RESTful 架构中,GET 用于获取资源,POST 用于创建资源(也可用于更新),PUT 用于更新资源,DELETE 用于删除资源,这与数据库的增删改查操作相对应[^4]。 ### 三级标题:RESTful 在 Web 开发中的应用 在实际开发中,RESTful API 广泛应用于构建现代 Web 服务。例如,在 Go 中使用 net/http 包可以非常简单地创建一个符合 REST 原则的 API 服务,开发者可以通过定义不同的路由和处理函数来响应不同 HTTP 方法的请求[^2]。 在 Rust 的 Actix Web 框架中,也提供了一套完整的工具来帮助开发者按照 REST 原则构建 API。通过定义资源端点、绑定 HTTP 方法和处理逻辑,可以快速搭建出结构清晰、易于维护的 Web 服务。例如,以下是一个简单的 RESTful 路由示例: ```rust use actix_web::{web, App, HttpServer, Responder}; async fn get_courses() -> impl Responder { "Returning list of courses" } async fn create_course() -> impl Responder { "Creating a new course" } #[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/courses", web::get().to(get_courses)) .route("/courses", web::post().to(create_course)) }) .bind("127.0.0.1:8080")? .run() .await } ``` 该代码定义了两个端点 `/courses`,分别对应 GET 和 POST 请求,用于检索课程列表和发布新课程[^1]。 ### 三级标题:RESTful 的优势与最佳实践 采用 RESTful 风格设计 API 可以带来良好的可扩展性、一致性和可测试性。由于其基于标准的 HTTP 协议,因此无需额外的协议转换机制,简化了开发流程并提高了系统的互操作性[^4]。 在设计 RESTful Web Service 时,建议遵循如下原则: - 使用名词复数形式表示资源集合,如 `/users`; - 使用统一的状态码返回操作结果,如 200 表示成功、201 表示资源已创建、404 表示资源不存在; - 尽量避免在 URL 中使用动词,而是通过 HTTP 方法表达操作意图; - 支持 HATEOAS(超媒体即状态引擎),使客户端能够通过 API 自行导航。 这些实践有助于构建出更规范、易用和可维护的 API 接口[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值