RESTful API设计原则与规范

合集下载

RESTfulAPI接口设计规范

RESTfulAPI接口设计规范

RESTfulAPI接⼝设计规范 ⽹络应⽤程序,分为前端和后端两个部分。

当前的发展趋势,就是前端设备层出不穷(⼿机、平板、桌⾯电脑、其他专⽤设备…)。

因此,必须有⼀种统⼀的机制,⽅便不同的前端设备与后端进⾏通信。

这导致API构架的流⾏,甚⾄出现"API First"的设计思想。

RESTful API是⽬前⽐较成熟的⼀套互联⽹应⽤程序的API设计理论。

REST(Representational State Transfer)表述性状态转换,REST指的是⼀组架构约束条件和原则。

如果⼀个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

REST本⾝并没有创造新的技术、组件或服务,⽽隐藏在RESTful背后的理念就是使⽤Web的现有特征和能⼒,更好地使⽤现有Web标准中的⼀些准则和约束。

虽然REST 本⾝受Web技术的影响很深,但是理论上REST架构风格并不是绑定在HTTP上,只不过⽬前HTTP是唯⼀与REST相关的实例。

⼀、URI URI 表⽰资源,资源⼀般对应服务器端领域模型中的实体类。

⼀般规范:1、不⽤⼤写;2、⽤中杠 - 不⽤下杠 _;3、参数列表要encode;4、URI中的名词表⽰资源集合,使⽤复数形式。

5、URI表⽰资源的两种⽅式:资源集合、单个资源。

资源集合: /zoos //所有动物园 /zoos/1/animals //id为1的动物园中的所有动物 单个资源: /zoos/1 //id为1的动物园 /zoos/1;2;3 //id为1,2,3的动物园6、避免层级过深的Uri / 在url中表达层级,⽤于按实体关联关系进⾏对象导航,⼀般根据id导航。

过深的导航容易导致url膨胀,不易维护,如 GET /zoos/1/areas/3/animals/4,尽量使⽤查询参数代替路径中的实体导航,如GET /animals?zoo=1&area=3;7、对组合资源的访问 服务器端的组合实体必须在uri中通过⽗实体的id导航访问。

软件开发实习报告:RESTful API设计与实现的最佳实践经验分享

软件开发实习报告:RESTful API设计与实现的最佳实践经验分享

软件开发实习报告:RESTful API设计与实现的最佳实践经验分享一、引言在现代软件开发领域中,RESTful API(Representational State Transfer Application Programming Interface)的设计与实现已经成为了必不可少的一部分。

RESTful API作为一种基于HTTP协议的web服务设计理念和实践,被广泛应用于各种网站和移动应用开发中。

本文将分享我在软件开发实习中,通过设计与实现RESTful API的经验和教训,总结出的一些最佳实践。

二、RESTful API设计原则1. 资源的标识与命名:RESTful API设计中,需要明确资源(Resource)的标识和命名方式。

资源的标识通常使用URI(Uniform Resource Identifier)来表示,可以通过URI路径和查询参数来指定具体的资源。

在命名资源时,应该使用名词而不是动词,符合资源的实际含义。

2. 请求方法的合理使用:HTTP协议定义了一系列的请求方法,如GET、POST、DELETE等。

在RESTful API设计中,应该根据具体的操作类型来选择合适的请求方法。

一般情况下,GET用于获取资源、POST用于创建资源、PATCH用于更新资源、DELETE用于删除资源。

3. 数据交互格式:RESTful API中的数据交互通常使用JSON (JavaScript Object Notation)格式,因为JSON具有简单、易读、易解析的特点。

在API设计中,应该使用有意义的JSON键名,以提高可读性和易用性。

4. 状态码的正确使用:HTTP协议定义了一系列的状态码,用于表示请求的处理结果。

在RESTful API设计中,应该根据不同的场景选择合适的状态码。

一般情况下,200表示成功、201表示资源创建成功、400表示请求错误、404表示资源不存在、500表示服务器内部错误等。

RESTfulAPI设计的实现方法与应用

RESTfulAPI设计的实现方法与应用

RESTfulAPI设计的实现方法与应用RESTful API(Representational State Transfer API)是一种基于HTTP/HTTPS协议的API设计风格。

它的设计目的是让网络应用程序能够轻松地实现可伸缩性、可重复使用性、模块化和可定制化等特性。

本文将介绍RESTful API的设计实现方法与应用。

一、设计原则RESTful API的设计原则主要包括以下几点:1.资源导向:RESTful API的设计思想是将每个API都视为一个资源,每个资源都有自己的唯一URI(统一资源标识符)。

2.HTTP动词:RESTful API的设计中,基本的CRUD操作(Create、Read、Update、Delete)通过HTTP的四种方法(POST、GET、PUT、DELETE)来实现。

POST用于新建资源、PUT用于更新资源、GET用于获取资源,DELETE用于删除资源。

3.无状态:每个请求都包含足够的信息,以便服务器能够处理请求。

服务器不会记录任何会话或任何其他与请求有关的信息。

4.客户端–服务器分离:RESTful API的客户、服务器分离性很强。

客户端处理用户交互,服务器处理数据存储等工作。

5.缓存:服务器可以缓存请求的响应以提高性能。

6.层次结构:RESTful API可以使用多层结构,以便能够实现更高级别的功能。

二、实现方法1.URI命名RESTful API的URIs必须包含所请求资源的信息,并通过明确的定义,将请求资源的特定视图捆绑到单个URI上。

URI必须使用名词而不是动词命名。

2.资源参数RESTful API的请求必须包含完整的资源信息,包括设置资源属性值和其他相关信息。

3.响应码RESTful API必须返回合适和合法的HTTP响应码,如200、201、204、400、401、404等。

4.消息体格式RESTful API的请求和响应都必须基于json或xml格式,以便进行传输和解析。

(完整版)系统对接方案

(完整版)系统对接方案

(完整版)系统对接方案一、前言对于企业应用系统的开发和运维,通常需要与其他应用系统进行对接。

应用系统之间的对接通常以服务接口的方式进行,其中通用的对接方法为基于HTTP协议的RESTful API。

本文主要介绍RESTful API对接规范和服务接口的开发过程,以及基于Spring Boot框架的服务接口实现。

二、RESTful API对接规范RESTful API是指按照REST原则设计的API接口,包括资源名、HTTP方法、URI以及参数等要素。

在企业应用系统对接过程中,RESTful API是主要的对接方式之一。

以下是RESTful API设计的规范:1. 资源名资源名应该使用名词,而且是复数形式。

例如,对于用户信息的API,资源名应该为“users”。

2. HTTP方法HTTP方法有GET、POST、PUT、DELETE等,其中GET用于查询资源信息,POST用于新建资源,PUT用于修改已有资源,DELETE用于删除资源。

3. URIURI应该包含版本号,在主机地址之后,路径中应该包含资源名和可能的参数。

例如,/api/v1/users?name=john,表示查询名称为john的用户信息。

4. 参数参数应该使用查询字符串的方式发送,在URI中使用“?”后面跟参数的方式进行传递。

参数的名称和值都应该进行URL 编码。

三、服务接口的开发过程服务接口的开发过程通常分为以下步骤:1. 确定接口需求需要明确接口的需求,包括参数、输入输出及业务流程等。

只有明确需求,才能进行接口设计和开发。

2. 设计接口设计接口时,需要考虑接口规范和技术实现。

应该考虑接口的可用性和易用性,确保接口的稳定性及可扩展性。

3. 定义接口文档接口文档是对接口功能和参数的详细概述,包括参数名称、类型、输入输出格式等。

接口文档可以用于开发、测试和维护时的参考。

4. 开发接口在开发接口过程中,需要按照需求和设计实现对应的功能。

需要对边界条件进行测试,确保接口稳定且容错能力强。

RESTfulAPI设计原则

RESTfulAPI设计原则

RESTfulAPI设计原则RESTfulAPI(Representational State Transfer API)是一种基于HTTP协议的网络应用程序接口设计风格。

它通过URL来定位资源,使用HTTP方法(GET、POST、PUT、DELETE等)来操作资源,并通过HTTP状态码返回操作结果。

RESTfulAPI的设计原则包括以下几点:1. 资源定位RESTfulAPI的核心思想是以资源为中心进行设计。

每个API对应一个或多个资源,资源使用URL进行唯一标识。

在API的设计过程中,应该明确定义资源的URL,并通过合适的命名方式来表达资源的层级关系。

例如,对于一个博客系统的API,可以以博客文章为资源,使用类似于“/articles/{articleID}”的URL进行资源定位。

2. 使用合适的HTTP方法RESTfulAPI使用HTTP方法来进行资源的操作。

根据HTTP方法的语义,选择合适的方法进行操作。

常用的HTTP方法包括GET、POST、PUT和DELETE。

GET用于获取资源,POST用于创建资源,PUT用于更新资源,DELETE用于删除资源。

在设计API时,应该根据具体的业务需求选择合适的HTTP方法,并遵循HTTP的语义。

3. 使用合适的HTTP状态码RESTfulAPI使用HTTP状态码来表示操作的结果。

常见的HTTP状态码包括200、201、204、400、401、404、500等。

其中,200表示成功,201表示资源创建成功,204表示成功但无内容,400表示请求错误,401表示未授权,404表示资源不存在,500表示服务器内部错误。

在设计API时,应该合理使用HTTP状态码,并携带必要的信息,以便客户端能够正确处理返回结果。

4. 使用合适的数据格式RESTfulAPI可以使用多种数据格式进行数据的传输,常见的数据格式包括JSON、XML和HTML等。

在设计API时,应该选择合适的数据格式,以满足客户端的需求。

RESTful API接口设计规范

RESTful API接口设计规范

RESTful API接口设计规范随着互联网的普及,Web技术的快速发展,越来越多的应用程序开始前后端分离,前端通过RESTful API接口与后端进行交互。

为了保证RESTful API接口的良好使用体验和开发效率,设计RESTful API接口需要遵守一定的规范。

一、RESTful API接口设计原则1.资源定位RESTful API接口应该通过URL来标识资源的位置,URL中使用标准的HTTP方法(GET、POST、PUT、DELETE)和标准的HTTP状态码(200 OK、201 Created、204 No Content、400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found等)。

例如:GET /articles/1 表示获取ID为1的文章信息,PUT/articles/1 表示更新ID为1的文章信息,DELETE /articles/1 表示删除ID为1的文章信息,POST /articles 表示创建一篇新的文章。

2.统一接口RESTful API接口应该具有统一的接口,首先需要确定资源的URL和资源的请求方式,其次需要确定请求的参数和返回的格式。

例如:GET /articles?category=1&status=1 表示获取分类为1,状态为1的文章列表,返回JSON格式的数据。

3.无状态通信RESTful API接口应该保持无状态通信,即每次请求都包含所有必要的信息,应用程序无需维护用户状态。

例如:用户每次请求API之前,需要通过OAuth认证或者Token认证获得访问权限,每次请求都需要添加Token等认证信息,避免请求与服务器之间的状态不同步。

二、RESTful API接口设计规范1.资源命名RESTful API接口中的资源应该使用名词作为资源名称,使用复数形式表示一组资源,使用短横线(-)作为单词之间的连接符。

restfulurl设计规范_RESTfulAPI接口设计规范

restfulurl设计规范_RESTfulAPI接口设计规范RESTful API 是一种设计风格,用于构建 Web 服务,它遵循一组规范和设计原则,使得系统易于扩展、易于维护,并且能够在不同的客户端平台上进行互操作。

其中一个关键的方面是 RESTful API 的 URL 设计规范,本文将介绍一些常用的设计原则和最佳实践。

1.使用名词而不是动词RESTful API 应该将资源表示为名词,而不是动词。

URL 应该描述所提供资源的名称,而不是动作。

例如,应该使用 /users 表示用户资源,而不是使用 /getUsers 这样的动词形式。

2.使用复数形式资源的 URL 应该使用复数形式,因为资源通常是以集合的形式存在的。

例如,使用 /users 来表示多个用户资源,使用 /users/{id} 来表示特定用户资源。

3.使用层级关系如果资源之间存在层级关系,URL 中可以使用层级结构来表示。

例如,使用 /users/{id}/posts 来表示用户的帖子资源。

4.避免嵌套层级过深虽然可以使用嵌套层级来表示资源之间的关系,但应该避免层级过深。

嵌套层级过深会导致URL变得复杂且难以维护。

应该确保URL的层级结构保持合理和易于理解。

5.使用查询参数过滤和分页如果有需要根据一些条件来过滤资源,应该使用查询参数来传递这些条件。

例如,可以使用 /users?age=30 来获取年龄为 30 的用户。

另外,如果资源过多,应该使用分页来返回部分结果。

可以使用查询参数来指定页数和每页的数量,例如 /users?page=1&limit=10 表示获取第一页的10 个用户。

6.使用HTTP方法来表示操作RESTful API 使用 HTTP 方法来表示对资源的操作。

常用的 HTTP 方法有 GET、POST、PUT 和 DELETE。

GET 用于获取资源,POST 用于创建资源,PUT 用于更新资源,DELETE 用于删除资源。

RESTful接口规范(带案例)

RESTful接口规范(带案例)REST(Representational State Transfer)是一种软件设计原则,它强调在Web应用程序中使用现有的标准和协议。

RESTful接口通过HTTP协议传输数据,使得客户端能够使用简单而统一的方式与服务端进行通信。

下面是一些关于RESTful接口规范的重要原则和准则,并附带一些示例来说明它们的用法。

1. 使用合适的HTTP方法(GET、POST、PUT、DELETE):RESTful接口应根据不同的操作类型选择合适的HTTP方法,以清晰地表示进行的操作。

例如,GET方法用于从服务器检索资源,而POST方法用于在服务器上创建新资源。

示例:- 获取用户信息:GET /users/{id}- 创建新用户:POST /users2. 使用合适的资源和集合命名:资源和集合应以名词形式命名,并使用复数形式表示集合。

这样做可以使接口更加直观且易于理解。

例如,对于用户资源,可以用/users表示用户集合,/users/{id}表示单个用户资源。

示例:- 获取所有用户:GET /users- 创建新用户:POST /users3. 使用合适的HTTP状态码:RESTful接口应使用合适的HTTP状态码来表示请求的结果。

例如,200表示成功,404表示资源未找到,500表示服务器内部错误。

HTTP状态码可以提供关于请求的详细信息,使客户端能够根据不同的状态码采取适当的行动。

示例:- 用户创建成功:201 Created- 用户不存在:404 Not Found4. 使用合适的数据格式:RESTful接口可以使用不同的数据格式进行数据交换,如JSON、XML等。

JSON是最常用的格式,它具有灵活性和易用性。

使用一致的数据格式可以使接口更易于理解且易于开发。

示例:- 请求头中指定数据格式:Accept: application/json- 响应中返回JSON数据:Content-Type: application/json5.使用资源关联和嵌套:如果资源之间存在关联,可以使用嵌套的方式表示它们之间的层次关系。

restful api接口原则 -回复

restful api接口原则-回复Restful API接口原则Restful API(Representational State Transfer)是一种基于HTTP协议的Web服务架构风格,它的设计原则和约束条件可以帮助开发人员构建可扩展、可维护和易于理解的API接口。

在本文中,我们将讨论Restful API 接口的原则,并深入探讨每个原则的细节。

Restful API的原则主要有以下几个方面:1. 统一接口(Uniform Interface)Restful API的第一个原则是要保持接口的一致性和统一性。

这意味着不同的API端点应该具有相似的URL结构,采用相同的HTTP方法(GET、POST、PUT、DELETE等),并使用标准的HTTP状态码来表示请求的结果。

统一的接口使得客户端可以更容易地理解和使用API,也便于服务端对接口进行管理和维护。

2. 无状态(Stateless)Restful API的第二个原则是要保持无状态。

这意味着每个API请求都应该包含足够的信息,使得服务端能够完全理解请求的含义,而不依赖于之前的请求或状态。

无状态的API设计可以提高可扩展性和性能,因为服务端不需要维护任何会话状态信息。

3. 资源导向(Resource-Oriented)Restful API的第三个原则是要将系统中的一切视为资源,并以资源为中心来设计API。

资源可以是实体(如用户、订单等)或集合(如用户列表、订单列表等)。

每个资源都应该有一个唯一的标识符,即URL,通过URL 可以对资源进行操作。

资源导向的设计方式使API具有自描述性和可扩展性。

4. 操作(Actions)Restful API的第四个原则是在资源上执行操作。

这意味着通过HTTP方法对资源进行不同的操作。

常见的HTTP方法有GET(获取资源)、POST (创建资源)、PUT(更新资源)和DELETE(删除资源)。

通过使用不同的HTTP方法,可以使API接口的设计更加直观和符合直觉。

restful api设计原则

restful api设计原则RESTful API设计原则是一种为建立基于HTTP协议的Web服务定义的规范。

以下是一些常见的RESTful API设计原则:1. 使用有意义的资源路径:资源路径应该准确地描述资源的含义,应该使用名词表示资源,而不是使用动词。

例如,使用"/users"表示用户资源,而不是使用"/getUsers"。

2. 使用HTTP方法:HTTP定义了常见的方法,如GET、POST、PUT和DELETE,作为对资源的不同操作。

使用这些方法来表示对资源的不同操作,使API的设计更为清晰和一致。

3. 使用合适的HTTP状态码:HTTP状态码用于表示请求的处理结果,因此在API设计中使用合适的状态码非常重要。

例如,使用200表示成功的响应,使用400表示请求无效,使用404表示资源未找到等。

4. 使用资源的嵌套关系而不是冗余数据:当资源之间存在嵌套关系时,应该使用资源的嵌套关系来表示资源之间的关联,而不是在响应中包含冗余数据。

例如,通过在"/users/{userId}/orders"路径中获取用户订单,而不是在用户资源中包含订单数据。

5. 使用版本控制:当API发生变化时,应该使用版本控制来管理不同版本的API。

这样可以使应用程序与旧版本的API保持兼容,并允许逐步迁移到新版本。

6. 提供适当的文档和示例:为了使API易于使用,应该提供适当的文档和示例。

文档应该描述每个API端点的用法和参数,示例可以帮助开发人员更好地理解API的使用方法。

7. 使用过滤器和分页:当处理大量数据时,应该使用过滤器和分页来限制返回的结果。

这样可以提高API的性能和响应时间。

8. 使用身份验证和授权:为了保护API的安全性,应该使用适当的身份验证和授权机制。

例如,使用OAuth来授权访问API,使用Token进行身份验证。

总的来说,RESTful API设计应该遵循资源的定义和操作的表示,使用合适的HTTP方法和状态码,同时提供适当的文档和示例,以提高API的可用性和易用性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RESTful API设计原则与规范一、背景与基础概念 2二、RESTful API应遵循的原则 31、协议(Protocol) 32、域名(ROOT URL) 33、版本(Versioning) 34、路径(Endpoints) 45、HTTP动词(HTTP Verbs) 56、过滤信息(Filtering) 67、状态码(Status Codes)78、错误处理(Error handling)89、返回结果(Response)810、使用HATEOAS的Hypermedia API 811、认证(Authentication)9三、Swagger API标准9REST,即Representational State Transfer的缩写。

RESTful架构,是目前最流行的一种互联网软件架构。

它结构清晰、符合标准、易于理解、扩展方便,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制,所以正得到越来越多网站的采用。

如果一个架构符合REST原则,就称它为RESTful架构。

本文即将描述的,即是创建RESTful架构的API所要遵循的原则与规范。

一、背景与基础概念Web 应用程序最重要的REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。

从客户端到服务器的每个请求都必须包含理解请求所必需的信息。

•资源(resource):网络上的一个实体或者说是一个具体信息,可以是一段文本、一张图片、一首歌曲、一种服务。

•统一资源定位符(URI,Universal Resource Identifier):一个资源的识别符或者说是一个地址,通过URI你可以定位到特定的资源。

要获取这个资源,需要访问它的URI,因此,URI就成了每一个资源的地址或独一无二的识别符。

•状态转换(State Transfer): 所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。

客户端与服务器互动的过程,通常涉及到服务器端数据和状态的变化过程,比如文件被修改,访问数量增加等。

使用的是标准的HTTP 方法,Http标准中定义的最主要四个动词:GET、POST、PUT、DELETE。

它们分别对应四种基本操作:-GET:用来获取资源-POST:用来新建资源-PUT:用来更新资源-DELETE:用来删除资源•Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。

二、RESTful API应遵循的原则1、协议(Protocol)API与用户的通信协议,尽量使用HTTPs协议。

HTTPs协议的所有信息都是加密传播,第三方无法窃听,具有校验机制,一旦被篡改,通信双方会立刻发现,配备身份证书,防止身份被冒充。

2、域名(ROOT URL)应该尽量将API部署在专用域名之下。

https://如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。

https:///api/3、版本(Versioning)应该将API的版本号放入URL。

https:///v1/另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。

Github采用这种做法。

注:需要注意版本规划,以便以后API的升级和维护。

使得API版本变得强制性,不要发布无版本的API,使用简单数字,避免小数点如2.5。

4、路径(Endpoints)路径表示API的具体网址URL。

在RESTful架构中,每个URL代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与代表的对象名称对应。

一般来说,某一同种记录的”集合”(collection),所以API中的名词也应该使用复数。

具体细则:1、使用名词而不是动词。

举例来说,某个URL是/cards/show/1,其中show是动词,这个URL就设计错了,正确的写法应该是/cards/1,然后用GET方法表示show。

如果某些动作是HTTP动词表示不了的,你就应该把动作做成一种资源。

比如网上汇款,从账户1向账户2汇款500元,错误的URI是:POST /accounts/1/transfer/500/to/2。

正确的写法是把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务:POST /transaction?from=1&to=2&amount=500.00。

2、使用复数名词。

不要混淆名词单数和复数,为了保持简单,只对所有资源使用复数。

举例:/cars 而不是/car/users 而不是/user/products 而不是/product/settings 而不是 /setting3、使用子资源表达关系。

如果一个资源与另外一个资源有关系,使用子资源。

举例:GET /cars/911/drivers/ 返回car 911的所有司机GET /cars/911/drivers/8 返回car 911的8号司机5、HTTP动词(HTTP Verbs)对于资源的具体操作类型,由HTTP动词表示。

常用的HTTP动词有下面五个:•GET(SELECT):从服务器取出资源(一项或多项)。

•POST(CREATE):在服务器新建一个资源。

•PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

•PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

•DELETE(DELETE):从服务器删除资源。

还有两个不常用的HTTP动词。

•HEAD:获取资源的元数据。

•OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

注:Get方法和查询参数不应该涉及状态改变。

使用PUT, POST 和DELETE方法而不是GET 方法来改变状态。

6、过滤信息(Filtering)如果记录数量很多,服务器不可能都将它们返回给用户。

API应该提供参数,过滤返回结果。

为集合提供过滤、排序、选择和分页等功能。

下面是一些常见的参数。

•limit=10:指定返回记录的数量•offset=10:指定返回记录的开始位置。

•pageNumber=2&perSize=100:指定第几页,以及每页的记录数。

•sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。

•animal_type_id=1:指定筛选条件参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。

比如,GET /zoo/ID/animals 与GET /animals?zoo_id=ID 的含义是相同的注:①移动端能够显示其中一些字段,它们其实不需要一个资源的所有字段,给API消费者一个选择字段的能力,这会降低网络流量,提高API可用性。

②为了将总数发给客户端,使用订制的HTTP头:X-Total-Count.7、状态码(Status Codes)服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

•200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

•201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

•202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)•204 NO CONTENT - [DELETE]:用户删除数据成功。

•400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

•401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。

•403 Forbidden - [*]:表示用户得到授权(与401错误相对),但是访问是被禁止的。

•404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

•406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

•410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

•422 Unprocesable entity - [POST/PUT/PATCH]:当创建一个对象时,发生一个验证错误。

•500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

8、错误处理(Error handling)如果状态码是4xx,就应该向用户返回出错信息。

尽量使用详细的错误包装信息:{"errors": [{"userMessage": "Sorry, the requested resource does not exist", "internalMessage": "No car found in the database","code": 4xx,"more info": "/api/v1/errors/12345"}]}9、返回结果(Response)服务器返回的数据格式,应该尽量使用JSON,避免使用XML。

针对不同操作,服务器向用户返回的结果应该符合以下规范。

•GET /collection:返回资源对象的列表(数组)•GET /collection/resource:返回单个资源对象•POST /collection:返回新生成的资源对象•PUT /collection/resource:返回完整的资源对象•PATCH /collection/resource:返回完整的资源对象•DELETE /collection/resource:返回一个空文档10、使用HATEOAS的Hypermedia APIRESTful API最好使用Hypermedia as the Engine of Application State(超媒体作为应用状态的引擎),即返回结果中提供链接,连向其他API方法,超文本链接可以建立更好的文本浏览,使得用户不查文档,也知道下一步应该做什么。

比如,当用户向的根目录发出请求,会得到这样一个文档。

{"link": {"rel": "collection https:///zoos","href": "https:///zoos","title": "List of zoos","type": "application/vnd.yourformat+json"}}上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。

相关文档
最新文档