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

REST API URI 设计七准则

在了解 REST API URI 设计规则之前,让我们快速过一下我们将要讨论一些术语。 URI REST API 使用统一资源标识符(URI)来寻址资源。...REST API 设计人员应该创建 URI,将 REST API 资源模型传达给潜在客户端开发人员。在这篇文章中,我将尝试为 REST API URsI 引入一套设计规则。...许多 Web 组件和框架将平等对待以下两个 URI: http://api.canvas.com/shapes/ http://api.canvas.com/shapes 然而,URI每个字符都会被计入作为资源唯一标识...两个不同 URI 映射到两个不同资源。如果 URI 不同,那么资源也会不同,反之亦然。因此,REST API 必须生成和传达清晰 URI,并且不应容忍任何客户端尝试去对一个资源进行模糊标识。...更多API可能会将客户端重定向到末尾没有斜杠 URI 上,(他们也可能会返回 301 - 用于重新定位资源 “Moved Permanently”)。

1.3K40

REST API URI七大设计原则

在了解REST API URI设计规则之前,让我们快速浏览一些我们将要讨论术语。 URIs REST API使用统一资源标识符(URI)来寻址资源。...REST API设计人员应该在考虑将REST API资源模型传达给潜在客户端开发者前提下,创造URI。在这篇文章中,我将尝试为REST API URI 引入一套设计规则。...两个不同URI映射到两个不同资源。如果URI不同,那么资源也是如此,反之亦然。因此,REST API必须生成和传递精确URI,不能容忍任何客户端尝试不精确资源定位。...有些API碰到这种情况,可能设计为让客户端重定向到相应没有尾斜杠URI(也有可能会返回301 - 用来资源重定向)。...最后,望大家牢记:你在为你客户端设计API URI,而不仅仅是为你数据。

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

BUG赏金 | 无效API授权导致越权

图片来源于网络 大家好,我想分享一下我是如何在某邀请项目中发现一个简单API授权错误,该错误影响了数千个子域,并允许我在无需用户干预情况下使用大量不受保护功能,从帐户删除到接管甚至于泄漏部分信息...我在使用dirsearch对网站进行扫描同时,通过浏览academy.target.com对网站功能做了大致了解,我注意到一个有趣端点,如:academy.target.com/api/docs此类端点就像是个金矿...,因为它列出了API文档并指定了请求和响应结构。...在没有任何APItoken或 authorization 头情况下直接调用端点会导致: ? 该网站似乎未提供任何API,并且我找不到任何生成APItoken方法,因此我决定稍后再进行检查。...我决定只复制authorization 头并将其包含在对我发现API端点调用中。我创建了另一个帐户,并尝试通过api / user / editPOST请求更改其密码。 ? ?

1.4K30

nginx实现内容重定向两种方式:rewrite和反向代理

第一种:rewrite 按照常规理解,实现重定向就是要用rewrite来实现,例如demo: ?...当访问test.cc/uri,如果uri资源在项目中不存在,就会重定向 http://www.yuhaiwei.net/blog/Api_element 网页。...但是使用rewrite重定向,浏览器链接是会发生变化。 第二种:反向代理 有些场景需要内容重定向到另外一个url, 但是链接保持不变,这时候就可以利用反向代理配置来达到目的。 ?...但是需要注意这样针对具体项目可能会有不同细节问题,比如这个demo中http://test.cc/blog/Api_element网页里会用到相同域名下静态资源,静态资源会因为上述重定向无效,可以通过更细分...location或者结合if来实现针对不同规则uri来实现不同方式重定向,这里不详谈。

1.4K10

Spotify是如何调整CDN服务来实现闪电般快速流媒体体验

/ 一个着眼于未来企业 Spotify业务建立在出色内容交付之上。...但是,用于其他内容CDN操作都变得低效,有些内容直接从AWS S3或谷歌云存储等存储桶中流式传输生成。开发人员只是简单地使得存储桶可读并将URI放入他们代码中之后就可以继续了。...基于Spotify精神,我们需要定制CDN功能来处理错误和重定向以及令牌识别等任务。...请求CDN审核自助服务工具 我们开发了一个SquadCDN来提供内部部署前审查服务,在这里就使用到了FastlyAPI和VCL。...注意API调用限制。即使有很高限制,一次调用太多API也会导致部署失败。仔细规划API调用将有助于确保一切服务顺利运行。 验证所有的事情。

1.2K10

从0开始构建一个Oauth2Server服务 AccessToken

redirect_uri(可能需要) 如果重定向 URI 包含在初始授权请求中,则服务也必须在令牌请求中要求它。令牌请求中重定向 URI 必须与生成授权代码时使用重定向 URI 完全匹配。...然后,该服务必须验证请求中提供授权码是否已发给已识别的客户端。最后,服务必须确保存在重定向 URI 参数与用于请求授权代码重定向 URI 相匹配。...不成功响应 如果访问令牌请求无效,例如重定向 URL 与授权期间使用不匹配,则服务器需要返回错误响应。...invalid_grant– 授权代码(或密码授予类型用户密码)无效或已过期。如果授权授予中提供重定向 URL 与此访问令牌请求中提供 URL 不匹配,这也是您将返回错误。...参数error_description只能是ASCII字符,最多只能是一两句话描述错误情况。这error_uri是链接到您 API 文档以获取有关如何更正遇到特定错误信息好地方。

20950

从协议入手,剖析OAuth2.0(译 RFC 6749)

如果要求完全重定向URI注册是不可能,授权服务器应该要求URI scheme, authority, and path注册(允许客户端动态改变重定向URI查询组)。...当一个重定向URI被包含在授权请求中时,授权服务器必须跟以注册客户端重定向URI作比较和匹配,如果没有就跟客户端本身URL作比较。      ...3.1.2.2 无效端点(Invalid Endpoint)               如果由于授权请求参数缺失,无效,或者不能匹配无效URI,授权服务器应该告知一个错误给资源所有者。      ...4.1.2.1 错误响应(Error Response)               如果由于缺失、无效、不匹配重定向URI和客户端标识符,授权服务器应该通知资源所有者错误,不能自动重定向用户代理到无效重定向...4.2.2.1 错误响应(Error Response)               如果由于缺失、无效、不匹配重定向URI和客户端标识符,授权服务器应该通知资源所有者错误,不能自动重定向用户代理到无效重定向

4.7K20

Django REST Framework-基于Oauth2身份验证(二)

OAuth2客户端是需要访问API应用程序,授权服务器负责验证并授予OAuth2客户端访问令牌。...在这里,您可以创建一个新OAuth2客户端,指定其名称、ID、秘密和回调URI。在这里,回调URI是客户端接收访问令牌URI。一旦您创建了OAuth2客户端,您就需要创建授权服务器。...是OAuth2客户端ID,redirect_uri是OAuth2客户端回调URI,scope是授权范围。...用户将被重定向到授权服务器登录页面,要求其输入其凭据并授予请求授权。如果用户授予请求授权,授权服务器将向用户返回授权码,该授权码可以在下一步中用于获取访问令牌。...如果访问令牌无效,则引发AuthenticationFailed异常。

1.9K20

打造 .NET Core 链接转发服务

它需要足够快,并能处理一定量流量 我当前设计会缓存有效 URL 重定向,因此对于对同一令牌请求,系统不会每次都查询数据库。 如何处理无效令牌或有效但不存在 URL?...对于无效令牌,停止请求。对于该有效令牌,但它指向不存在 URL(数据库中没有记录),将用户重定向到预先设置默认 URL。...其他 URL (如"/abc"、"123") 也被视为无效 URL,不会执行重定向。 对于可能包含恶意代码互联网 URL,目前不在设计范围中。但是,也许将来我们可以集成第三方服务来识别链接。...IUrlHelper 接口执行前两个无效情况验证。...例如为第三方提供 REST API、为管理链接添加Tag、甚至在ASP.NET Core 3.0 发布后使用 Blazor。

1.4K70

从0开始构建一个Oauth2Server服务 构建服务器端应用程序

通过在查询字符串中使用附加参数重定向回提供重定向 URL 来指示错误。总会有一个错误参数,重定向也可能包括error_description和error_uri。...重定向网址无效 如果提供重定向 URL 无效,授权服务器将不会重定向到它。相反,它可能会向用户显示一条描述问题消息。...参数无效 如果一个或多个参数无效,例如缺少所需值或参数response_type错误,服务器将重定向重定向 URL 并包括描述问题查询字符串参数。...invalid_scope: 请求范围无效、未知或格式错误。 server_error: 授权服务器遇到意外情况,无法满足请求。...此外,服务器可能包括参数error_description和error_uri有关错误附加信息。

17020

OAuth2.0认证解析

重定向URI或回调URL(callback_url) 重定向URI是授权方服务在用户授权(或拒绝)应用程序之后重定向供用户访问地址,因此也是用于处理授权码或访问令牌应用程序一部分。...需要精确地设置成从客户端接收到值。 错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外其它原因而导致请求失败, error_description 可选参数。...错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外其它原因而导致请求失败, error 错误码 invalid_request 请求缺少某个必需参数,包含一个不支持参数或参数值...invalid_grant 提供访问许可是无效、过期或已撤销(例如,无效断言,过期授权令牌,错误终端用户密码证书,或者不匹配授权码和重定向URI)。...错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外其它原因而导致请求失败, error_description 可选参数。

3.9K10

一张图搞清楚HTTP状态码

在浏览器请求网页或API请求数据时常见此状态码。简单来说,它告诉客户端:“你请求已经成功处理,并且所请求资源在消息体中。” 201 Created 该请求已成功,并因此创建了一个新资源。...这是一种重定向状态码,用于告知客户端资源新位置。 302 Found 临时移动,表示请求资源临时移动到了一个不同URI,与301不同是,302表示这种重定向只是暂时。...303 See Other 查看其它地址,将客户端重定向到不同URI,这是对原始请求响应,但响应本身位于另一个URI。...非常相似,都用于表示资源临时性重定向到另一个URI。...502 Bad Gateway 服务器作为网关或代理,从上游服务器收到无效响应。502错误表明你正在访问服务器是一个网关或代理服务器,而它在处理请求时从上游服务器或辅助服务器接收到了无效响应。

13110

从0开始构建一个Oauth2Server服务 授权响应

client_id– 请求此代码客户端 ID(或其他客户端标识符) redirect_uri– 使用重定向 URL。...如果请求语法有问题,例如redirect_uriorclient_id无效,那么重要是不要重定向用户,而应该直接显示错误消息。这是为了避免让您授权服务器被用作开放式重定向器。...如果redirect_uri和client_id都有效,但仍然存在其他问题,则可以将用户重定向回查询字符串中有错误重定向 URI。...当重定向回应用程序以指示错误时,服务器将以下参数添加到重定向 URL: error 以下列表中单个 ASCII 错误代码: invalid_request– 请求缺少参数、包含无效参数、多次包含参数或无效...invalid_scope– 请求范围无效或未知。 server_error– 服务器可以使用此错误代码重定向,而不是向用户显示 500 Internal Server Error 页面。

15750

HTTP 响应状态码全解

HTTP 状态代码或响应码共分为五类,分别是 1×× 提示信息,2×× 成功,3×× 重定向,4×× 客户端错误,5×× 服务器错误。 本文包含了完整 HTTP 状态码以及相应描述信息。...当我们进行 API 测试时,通常首先会检查 API 调用返回响应状态码。这就要求我们必须熟悉那些最常见 HTTP 状态码,以便我们能够更快地识别问题。...301-永久移动,状态代码指示目标资源已分配了一个新永久 URI,并且将来对该资源任何引用都应使用其中一个封闭 URI。 302-找到,状态代码指示目标资源暂时驻留在不同 uri 下。...304-未修改 300-多种选择 303-参见其他 305-使用代理 307-临时重定向 308-永久重定向 4×× 客户端错误 4xx(客户端错误)类状态代码表示客户端似乎出错了。...502 坏网关 502(坏网关)状态代码表示服务器在充当网关或代理时,在尝试完成请求时从其访问入站服务器接收到无效响应。

2.6K30

第三方微信授权登录APP接入_使用第三方应用打开是什么意思

(C)假设用户给予授权,认证服务器将用户导向客户端事先指定重定向URI”(redirection URI),同时附上一个授权码。...(D)客户端收到授权码,附上早先重定向URI”,向认证服务器申请令牌。这一步是在客户端后台服务器上完成,对用户不可见。...(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token) 微信登录官方文档将微信登录分为3个步骤: 第一步.请求...如果access_token无效,服务端向微信开放平台发送刷新access_token请求如下: access_token是调用授权关系接口调用凭证,由于access_token有效期(目前为2个小时...private void refreshAccessToken() { String uri = "https://api.weixin.qq.com/sns/oauth2/refresh_token?

1.2K20
领券