`
jiasongmao
  • 浏览: 666882 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

RESTful API规范(详细版)

 
阅读更多

转自:https://www.colabug.com/228298.html

 

 

rest
是一种软件架构风格,如果你们的接口是 rest
接口,那么就可被认为你们的的接口是restful的,英文名词和形容词的区别。

rest
接口是围绕“资源”展开的,利用HTTP的协议,其实rest本也可以和HTTP无关,但是现在大家普遍的使用 rest
都是依托于HTTP协议。HTTP 的url即资源。

RFC 3986
定义了通用的URI语法:

URI = scheme “://” authority “/” path [ “?” query ][ “#” fragment ]
  • scheme: 指底层用的协议,如http、https、ftp
  • host: 服务器的IP地址或者域名
  • port: 端口,http中默认80
  • path: 访问资源的路径,就是咱们各种web 框架中定义的route路由
  • query: 为发送给服务器的参数
  • fragment: 锚点,定位到页面的资源,锚点为资源id

RESTful API设计

资源路径

对于rest资源的定义,即URL的定义,是最重要的;想要设计出优雅的、易读的rest 接口,其实还是听不容易的。

URL中不能有动词

在Restful架构中,每个网址代表的是一种资源,所以网址中不能有动词,只能有名词,动词由HTTP的 get、post、put、delete 四种方法来表示。

URL结尾不应该包含斜杠“/”

这是作为URL路径中处理中最重要的规则之一,正斜杠(/)不会增加语义值,且可能导致混淆。REST API不允许一个尾部的斜杠,不应该将它们包含在提供给客户端的链接的结尾处。

许多Web组件和框架将平等对待以下两个URI:

http://api.canvas.com/shapes/

http://api.canvas.com/shapes

但是,实际上URI中的每个字符都会计入资源的唯一身份的识别中。

两个不同的URI映射到两个不同的资源。如果URI不同,那么资源也是如此,反之亦然。因此,REST API必须生成和传递精确的URI,不能容忍任何的客户端尝试不精确的资源定位。

有些API碰到这种情况,可能设计为让客户端重定向到相应没有尾斜杠的URI(也有可能会返回301 - 用来资源重定向)。

正斜杠分隔符”/“必须用来指示层级关系

rul的路径中的正斜杠“/“字符用于指示资源之间的层次关系。

例如:

http://api.user.com/schools/grades/classes/boys
- 学校中所有的男生

http://api.college.com/students/3248234/courses
- 检索id为3248234的学生学习的所有课程的清单。

应该使用连字符”-“来提高URL的可读性,而不是使用下划线”_”

为了使URL容易让人们理解,请使用连字符”-“字符来提高长路径中名称的可读性。

一些文本查看器为了区分强调URI,常常会在URI下加上下划线。这样下划线”_”字符可能被文本查看器中默认的下划线部分地遮蔽或完全隐藏。

为避免这种混淆,请使用连字符”-“而不是下划线

URL路径中首选小写字母

RFC 3986将URI定义为区分大小写,但scheme 和 host components除外。

URL路径名词均为复数

为了保证url格式的一致性,建议使用复数形式。

RESTful API对资源的操作

对于rest api资源的操作,由HTTP动词表示

CURD操作

  • GET: 获取资源
  • POST: 新建资源
  • PUT:在服务器更新资源(向客户端提供改变后的所有资源)
  • PATCH: 在服务器更新资源(向客户端提供改变的属性)
  • DELETE:删除资源

PATCH
一般不用,用 PUT

资源过滤

在获取资源的时候,有可能需要获取某些“过滤”后的资源,例如指定前10行数据

http://api.user.com/schools/grades/classes/boys?page=1&page-size=10

返回状态码推荐标准HTTP状态码

有很多服务器将返回状态码一直设为200,然后在返回body里面自定义一些状态码来表示服务器返回结果的状态码。由于rest api是直接使用的HTTP协议,所以它的状态码也要尽量使用HTTP协议的状态码。

  • 200 OK 服务器返回用户请求的数据,该操作是幂等的
  • 201 CREATED 新建或者修改数据成功
  • 204 NOT CONTENT 删除数据成功
  • 400 BAD REQUEST 用户发出的请求有问题,该操作是幂等的
  • 401 Unauthoried 表示用户没有认证,无法进行操作
  • 403 Forbidden 用户访问是被禁止的
  • 422 Unprocesable Entity 当创建一个对象时,发生一个验证错误
  • 500 INTERNAL SERVER ERROR 服务器内部错误,用户将无法判断发出的请求是否成功
  • 503 Service Unavailable 服务不可用状态,多半是因为服务器问题,例如CPU占用率大,等等

 

 

 

 

分享到:
评论

相关推荐

    RESTful API设计规范

    ### RESTful API设计规范详解 #### 一、RESTful简介 RESTful是一种广泛应用于Web服务的设计风格,全称为Representational State Transfer(表述性状态转移)。它并非一项具体的技术标准,而是一系列设计原则和约束...

    RESTful API接口通用完整规范_V1.doc

    REST它是一种使用URL来定位资源,使用HTTP请求描述操作的Web服务规范,本资源包含RESTful简介、设计原则、通用说明、规范细则、接口管理说明。

    restful 接口开发规范(RESTfulAPIdesignguide)

    在开发RESTful接口时,我们需要遵循一定的设计规范来确保接口的一致性、可维护性和易用性。RESTful API(Representational State ...通过综合这些最佳实践和规范,我们可以构建出既强大又易于使用的RESTful API。

    Python语言开发RESTful API指南

    接下来,让我们详细探讨Python语言开发RESTful API的核心知识点。 首先,RESTful API的开发和使用本质上涉及客户端与服务器之间的请求(Request)和响应(Response)交互。按照REST架构风格的统一接口原则,不同的...

    lighttpd restfulapi cgi

    这个脚本需要解析接收到的HTTP请求,根据RESTful API规范执行相应操作,并生成响应。例如,如果使用Python,你可以使用`flask`这样的微框架来简化这一过程。 **五、安全与性能优化** 在部署lighttpd RESTful API和...

    基于 RESTful 架构的API设计原则和规范.docx

    基于 RESTful 架构的 API 设计原则和规范 RESTful 架构是目前最流行的一种互联网软件架构,它结构清晰、符合标准、易于理解、扩展方便,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。因此...

    基于 Go 语言构建企业级的 RESTful API 服务 企业级go gin 开发框架 附带源码

    RESTful API 有一系列规范,满足这些规范的 API 均可称为 RESTful API。RESTful API 的核心包括: 1. 在 RESTful API 中一切实体都被抽象成资源,每个资源有一个唯一的标识 —— URI,所有的行为都应该是在资源上的...

    restful API

    路径是指RESTful API的具体地址,其设计应当遵循一定的规范。在RESTful架构中,每个URL代表一种资源(resource),因此路径中不应包含动词,而只应包含名词,并且这些名词通常与数据库表名相对应。例如,一个动物园...

    基于 Go 语言构建企业级的 RESTful API 服务.pdf

    ### 基于 Go 语言构建企业级的 RESTful API 服务 #### 一、概述 本文档旨在介绍如何利用 Go 语言构建一个稳定、高效的企业级 RESTful API 服务。Go 语言以其简洁的语法、强大的并发能力及内置的 HTTP 服务器库等...

    RESTful-API设计原则与规范

    ### RESTful-API设计原则与规范 #### 一、背景与基础概念 RESTful架构作为一种流行的互联网软件架构,因其结构清晰、符合标准、易于理解和扩展等特点而受到广泛青睐。REST(Representational State Transfer)的...

    restful api guidelines

    PDF文件“restful-api-guidelines@www.java1234.com.pdf”很可能是这样一份详细的指南,包含上述原则的深入解释和具体实现示例。 遵循这些RESTful API设计指南,可以构建出优雅、易于理解和维护的API,促进开发者...

    Springboot_restful_api

    在这个项目“Springboot_restful_api”中,开发者使用了SpringBoot来构建RESTful风格的API,这是一种广泛用于现代Web服务的设计模式,允许客户端和服务器之间通过HTTP协议交换信息。 REST(Representational State ...

    tp5框架开发的restful API接口自动生成文档源码.zip

    这些工具可以从注释或特定的规范文件中解析API的信息,自动生成易于理解和使用的文档。在TP5项目中,开发者可以在控制器方法上方添加注释,描述接口的用途、参数、返回值等信息,然后通过apidoc.js等工具读取这些...

    OPC-RestfulAPI-net.rar

    在这个"OPC-RestfulAPI-net.rar"压缩包中,包含了一个名为"OPC-RestfulAPI-net.exe"的执行文件,这很可能是一个演示程序,将OPC服务器的功能转换为可以通过Web API访问的形式。Web API是一种创建HTTP服务的方法,...

    restful API 介绍与规范

    ### RESTful API 介绍与规范 #### RESTful 架构概览 RESTful(Representational State Transfer)是一种软件架构风格,而非严格意义上的技术标准。它主要用于客户端与服务器之间的交互类软件设计,旨在使软件系统...

    RestfulAPI开发示例

    以下是对Restful API开发的一些关键知识点的详细说明: 1. 资源(Resource)与URI:在RESTful API中,资源是核心概念,通常以URI(Uniform Resource Identifier)的形式表示。例如,`/users/{userId}`代表用户资源...

    Restful api规范.docx

    11111111111111111111111111111111111111111111111111111111111111111111111111111111111

Global site tag (gtag.js) - Google Analytics