首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何设计出优秀的Restful API

6 使用HTTP状态码 当客户端通过API向服务器发出请求时,客户端应该知道反馈,无论是失败,成功还是请求错误。 HTTP状态代码是一系列标准化代码,针对http请求的可能会发生的各种情况。...服务器应始终返回正确的状态代码。 很多人喜欢把错误信息放在返回值中,典型的Code和Message,其实比较Low。...201 Created每当创建新实例时,都应返回此状态代码。 例如,使用POST方法创建新实例时,应始返回201状态代码。 204 No Content表示请求已成功处理,但未返回任何内容。...4xx(客户端错误类别) 这些状态代码表示客户端已提出错误请求。 400 Bad Request表示未处理客户端的请求,因为服务器无法理解客户端要求的内容。...比如401表示用户身份认证失败,403表示你验证身份通过了,但是无权限操作资源。 在此,祝大家设计出优秀的Restful API

1K10

FastAPI(58)- 使用 OAuth2PasswordBearer 的简单栗子

FastAPI 的是第三种 密码授权模式的简易流程图 用户在客户端输入用户名、密码 客户端携带用户名、密码去请求授权服务器,访问获取 token 的接口 授权服务器验证用户名、密码(身份验证) 验证通过后...https://example.com/api/v1/,那么它将引用 https://example.com/api/v1/token oauth2_scheme 该变量是 OAuth2PasswordBearer...,FastAPI 会检查请求的 Authorization 头信息,如果没有找到 Authorization 头信息 或者头信息的内容不是 Bearer token,它会返回 401 状态码( UNAUTHORIZED...文档 多了个 Authorize 按钮,点击它 可以看到一个包含用户名、密码还有其他可选字段的授权表单 上述代码的问题 还没有获取 token 的路径操作 完善 OAuth2 #!...)状态码为 401 UNAUTHORIZED 都应该返回 WWW-Authenticate 的 Header 在此处返回的带有值 Bearer 的 WWW-Authenticate Header 也是

2.5K40
您找到你想要的搜索结果了吗?
是的
没有找到

Django Rest Framewor

,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是...API很简单 版本 URL,如:https://api.example.com/v1/ 放到请求头中                                         跨域时,引发发送多次请求...://api.example.com/v1/employees method GET      :服务器取出资源(一项或多项) POST    :在服务器新建一个资源 PUT      :在服务器更新资源...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...更多看这里:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 状态错误处理,状态码是4xx时,应返回错误信息,error当做

1.3K20

SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架

3.使用JSONObject统一获取body请求参数,减少实体类的数量。完成自定义@ValidationParam注解验证请求参数是否为空。 ?...7.使用POST请求登录返回token和权限信息(service层增删改方法命名规范会自动加上事物),保证请求状态,返回实体如果属性为空不显示。 ?...三、程序逻辑 1.填写用户名密码用POST请求访问/login接口,返回token令牌等信息,失败则直接跳转401错误页面。...2.在之后需要验证身份的请求的Headers中添加Authorization和登录时返回的token令牌。 3.服务端进行token认证,失败跳转401页面。...访问的接口url统一会加上/api/v1;编译器请安装lombok插件,不然会报红 运行截图: ? 彩蛋:项目注释完整,并且自定义了启动图案~

65630

我们必须要知道的RESTful服务最佳实践

请求一条微博信息,服务端响应信息应该包含这条微博相关的其他URL,客户端可以进一步利用这些URL发起请求获取感兴趣的信息,再如分页可以第一页的返回数据中获取下一页的URT也是基于这个原理 4.系统分层...简单点说你可以指定这些状态,但是不是强制的。常用HTTP状态码对照表 HTTP状态码也是有规律的 1**请求未成功 2**请求成功、表示成功处理了请求状态代码。...3**请求被重定向、表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。 4** 请求错误这些状态代码表示请求可能出错,妨碍了服务器的处理。...5**(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。...HTTP Method 详细解释 返回状态码 GET 获取对象或集合 200成功、401没有授权、403访问禁止、404没有资源、参数错误、406请求格式不正确、410资源被删除、500服务器内部错误

1.2K30

Django Rest Framework-介绍

什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST资源的角度类审视整个网络...,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是...api.example.com/v1/ 请求头 跨域时,引发发送多次请求 路径,视网络上任何东西都是资源,均使用名词表示(可复数) https://api.example.com/v1/zoos https...://api.example.com/v1/animals https://api.example.com/v1/employees method GET :服务器取出资源(一项或多项) POST...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

1.8K40

SpringBoot+JWT+Shiro+MybatisPlus实现Restful快速开发后端脚手架

3.使用JSONObject统一获取body请求参数,减少实体类的数量。完成自定义@ValidationParam注解验证请求参数是否为空。 ?...7.使用POST请求登录返回token和权限信息(service层增删改方法命名规范会自动加上事物),保证请求状态,返回实体如果属性为空不显示。 ?...三、程序逻辑 1.填写用户名密码用POST请求访问/login接口,返回token令牌等信息,失败则直接跳转401错误页面。...2.在之后需要验证身份的请求的Headers中添加Authorization和登录时返回的token令牌。 3.服务端进行token认证,失败跳转401页面。...访问的接口url统一会加上/api/v1;编译器请安装lombok插件,不然会报红 运行截图: ?

1.6K20

什么是RESTful,REST api设计时应该遵守什么样的规则?

常见的 HTTP 状态码1xxs:信息响应,服务器仍在处理请求。2xxs:成功,请求成功完成3xxs:重定向,收到的请求重定向到另一个地址。4xxs:客户端错误,例如,404 - 找不到页面。...5xxs:服务器错误请求失败。...一些常见的 HTTP 状态代码包括:200:成功的请求,通常是 GET201:创建后请求成功,通常是 POST204:请求成功,没有返回内容,通常是 PUT 或 PATCH301:永久重定向到另一个端点...400:错误请求(客户端应修改请求401:未经授权,凭据无法识别403:禁止,凭据接受但没有权限404:未找到,资源不存在410:消失了,资源以前存在但现在不存在429:请求过多,用于速率限制,应包含重试标头...500:服务器错误,一般性,值得查看其他 500 级错误503:服务不可用,另一个重试标头有用总结REST是一种软件架构风格,用于 Web 架构的设计,任何遵循 REST 设计原则的 API都被称为 RESTful

1.1K30

前端要知道的RESTful API架构风格

/v1/animals https://api.example.com/v1/employees HTTP动词 GET(SELECT):服务器取出资源(一项或多项)。...DELETE(DELETE):服务器删除资源。 HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 状态码的完全列表参见这里。...uploadfile.php - 上传创建文件 api/deletefile.php - 删除文件 RESTfu,api/file 只需要这一个接口: GET 方式请求 api/file - 获取文件信息

86730

RESTFUL API

https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees...DELETE(DELETE):服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。 下面是一些例子。...服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...八、错误处理(Error handling) 如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

79260

RESTful API 设计指南

https://api.example.com/v1/ 复制代码 另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。Github采用这种做法。...api.example.com/v1/zoos api.example.com/v1/animals api.example.com/v1/employee… 五、HTTP动词 对于资源的具体操作类型,...DELETE(DELETE):服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。 下面是一些例子。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 状态码的完全列表参见这里。

63810

RESTful规范

zoo=1&area=3 ; 二、   版本 应该将API的版本号放入到URI中 https://api.example.com/v1/zoos 三、 Request HTTP方法 通过标准HTTP方法对资源...§401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 §403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...不要发生了错误但给2xx响应,客户端可能会缓存成功的http请求; 2.     正确设置http状态码,不要自定义; 3.     ...业务异常 由自己的业务代码抛出,表示一个用例的前置条件不满足、业务规则冲突等,比如参数校验不通过、权限校验失败。 ...非业务类异常 表示不在预期内的问题,通常由类库、框架抛出,或由于自己的代码逻辑错误导致,比如数据库连接失败、空指针异常、除0错误等等。 业务类异常必须提供2种信息: 1.

1.9K00

RESTful API 设计指南

https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees...DELETE(DELETE):服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 状态码的完全列表参见这里。...八、错误处理(Error handling) 如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

77840

RESTful API怎样设计更合理

https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees...DELETE(DELETE):服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。 下面是一些例子。...401 Unauthorized – [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden – [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...500 INTERNAL SERVER ERROR – [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 状态码的完全列表参见这里。...八、错误处理(Error handling) 如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

57230

RESTful API 设计指南

https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees...DELETE(DELETE):服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 状态码的完全列表参见这里。...八、错误处理(Error handling) 如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

1.1K50

Restful API 设计指北

/api/ 当然,针对于 API 版本问题针对以上两种方法可以分别使用如下例子: # 针对于 API 子域名方式 api.domain/v1/ https://api.debuginn.cn/v1/ #...SELECT 服务端获取数据 POST 请求 => CREATE 服务端创建数据 PUT 请求 => UPDATE 服务端更新数据(将所有数据元素全部替换掉) PATCH 请求 => UPDATE...服务端更新数据(将部分数据元素替换掉) DELETE请求 => DELETE 服务端删除数据 还有两个不常使用的请求: HEAD 获取资源的元数据。...状态码都是三位的整数,大概分成了几个区间: 2XX:请求正常处理并返回 3XX:重定向,请求的资源位置发生变化 4XX:客户端发送的请求错误 5XX:服务器端错误 在 HTTP API 设计中,经常用到的状态码以及它们的意义如下表...状态码,并在 body 中说明具体的错误信息;而没有被授权访问的资源操作,需要返回 403 Forbidden 状态码,还有详细的错误信息。

68920
领券