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

揭秘 Uber API 网关的架构,建议收藏!

管理系统提供了一些辅助功能,比如新的配置更改发布前的审查门,以及存储会话用于共享或恢复 API 管理。以下截图是可用于添加中间件的 UI 步骤的概览: ?...管理 API 的用户不需要修改任何代码,只要修改配置,就可以决定网关上端点的预期行为。为了便于配置,这些是通过 UI 进行管理的,其后台有一个 Git 存储库。...平台所有者可以对这些实现进行无缝更新,并自动应用于所有端点。 断路器 每个用于调用后端服务的客户端都包含一个断路器。当后端服务延迟或错误率增加(可配置)时,断路器将启动,以防出现任何级联中断。...一个进行生成代码审查的 CI 作业可以防止对端点模式做任何向后不兼容的更改。 响应字段裁剪 因为 API 的创建很容易,而且多个端点可以由相同的底层客户端服务提供支撑。...一旦用户提供了配置并由构建系统接管,构建系统又独立于 UI 发展,将构建失败呈现到 UI 就变得非常困难。为了显示错误,在它们之间保持一致的契约至关重要。

1.4K20

宣布etcd 3.4

这个非阻塞读取事务现在用于压缩(compaction),结合压缩批大小的减少,可以减少压缩过程中的P99服务器请求延迟。 在租赁存储方面,已经做了更多的改进。...改进的Raft投票过程 etcd服务器实现了用于数据复制的Raft一致性算法。Raft是基于领导的协议。数据从领导者复制到追随者;跟随者将建议转发给领导者,领导者决定要做什么或不做什么。...最简单的形式是,当Raft领导者接收到具有更高任期(term)的消息没有任何进一步的集群范围的健康检查时,它会成为跟随者。此行为可能会影响整个群集的可用性。...这意味着学习者仍然接收来自领导者的所有更新,它不计入法定人数,法定人数被领导者用来评估同伴的活跃度。学习者只作为备用节点,直到被提升。...etcd v3.4的主要目标是简化客户机中的平衡器故障转移逻辑;当客户机断开与当前端点的连接时,只需使用一个端点不是维护不健康的端点列表(这些端点可能已经过时)。它不假定端点状态。

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

API OWASP 标准

API 管理 API 通过 API 管理发布 API 在开发人员门户中可见 API 只能通过 API 管理网关访问 请求 API 时强制执行速率限制 对 API 进行更改时会自动维护规范 针对标准规范的每次更改验证端点规范...HTTP 状态码 404 用于错误的 URL 400 -responses 有特定错误的附加信息(例如缺少必需的属性) 当 API 使用者使用错误的凭证时使用 401 -response 403 使用有效但请求...API 使用者无法访问的端点或尝试使用他们不允许执行的操作 500 - 当存在 API 使用者无法通过更改请求来解决的内部处理问题时响应 500 -responses 具有特定于应用程序的错误代码...支持错误消息本地化吗? 额外的安全性 所有端点都至少受到客户端特定 API 密钥的保护,即使它们是公开可用的(反农业)? 支持 OpenID 连接和 JWT(基于会话的身份验证)? 防范 CFRS?...规范包含标准格式的请求和响应示例,API 文档根据规范、模式和示例自动生成 POST, PUT: 201 为创建新资源创建 来自客户端的 400 个错误请求,例如缺少必需的查询参数 白名单:POST、

2.6K20

USB协议详解

如果设备检查到数据正确,但端点处于挂起状态,返回STALL。如果检测到有错误(如校验错误,位填充错误),则不做任何响应,让主机等待超时。...批量输入事务: (1)主机首先发送一个IN令牌包(包含设备地址,端点号)。 (2)主机切换到接收数据状态等待设备返回数据。如果设备检测到错误不做任何响应,主机等待超时。...如果主机检测到错误,则不做任何响应,设备会检测到超时。注意:USB协议规定,不允许主机使用NAK来拒绝接收数据包。主机收到NAK,知道设备暂时没有数据返回,主机会在稍后时间重新该批量输入事务。...,并且设备必须要接收,OUT令牌包没有这些限制 例子: 2、四种Packet类型之SOF Packet 帧起始包:在每帧(或微帧)开始时发送,以广播的形式发送,所有USB全速设备和高速设备都可以接收到...在usb系统中,所有的通信都是由主机发出相应的令牌所引起的。

1.9K10

IDOR漏洞

捕获所有请求 当IDOR漏洞测试时,基本上,你需要执行Web/移动应用程序应创建的所有请求。因为如果你在应用程序中更改了某些内容,则可以使用此案例创建其他请求。...如何找到注射点 如前所述,您可以使用应用程序的所有功能找到许多IDOR漏洞测试请求。在IDOR漏洞测试中未提供API端点时,.html源代码或.js文件会很有用。...IDOR错误的有趣案例 处理创建请求 某些应用程序在客户端创建一个id,然后将in create请求发送到服务器。该id值可以是诸如“-1”,“0”或任何其他的数字。...关键的IDOR IDOR漏洞允许我们在某个时间访问帐户,不是编辑或删除帐户。这些严重错误出现在密码重置,密码更改,帐户恢复等方面。首先,你应该仔细检查电子邮件中的链接及其中的参数。...因此,对于所有IDOR漏洞的测试,你都应该像黑客一样思考。 你可以为所有端点提供应用程序的权限。

3.2K30

我在实施蓝绿部署后遇到的问题和解决方法

创建这些类型的依赖将我们与特定的平台和发布方法绑定了,额外的代码会导致各种可能的缺陷和错误,这些缺陷和错误可能会因环境而异,因此极难测试。 这是怎么发生的呢?...对数据源或 API 的任何破坏性更改都意味着旧版本的请求不能被新版本处理,这就排除了蓝绿发布的可能性。...虽然大多数软件团队都在尽最大努力避免破坏性更改,但破坏性更改通常是不可避免的。 所以,让我们假设一下最好的情况,我们没有任何的破坏性更改。...例如,一种直接的方式是在 RESTful 端点的实际 URL 中放入一个版本。另一种方式是尝试使用 HTTP 头等元数据来表示版本控制;然而,这只适用于你能控制所有服务的服务内通信时。...它将允许我们的服务 B 的 2.0 版本管理任何 HTTP 404“URL 未找到”响应,如果它碰巧向服务 B 的 1.0 版本实例发送了一个 V2 请求,并且它将允许服务 A 托管端点的 V1 和 V2

86740

Spring 常犯的十大错误,这坑你踩过吗?

这样,对数据库后端进行更改将不需要在服务层进行任何额外的更改。...作为一名 API 开发者,理想情况下你希望覆盖所有面向用户的端点,并将他们转换为常见的错误格式。...(3) 记录关键数据 评估你的程序可能会在何处发生异常,并预先记录所有关键数据。如果发生错误,你将很高兴可以得到信息说明收到了哪些请求,并可更好地了解你的应用程序为什么会出现错误。...Spring 还允许通过 DeferredResult 类来进行异步请求处理。 6、错误六:不使用基于注解的验证 假设我们之前的 TopTalent 服务需要一个端点来添加新的 TopTalent。...9、错误九:无法接受依赖项注入 正确使用 Spring 的依赖注入意味着允许其通过扫描所有必须的配置类来将所有对象连接在一起;这对于解耦关系非常有用,也使测试变得更为容易,不是通过类之间的紧耦合来做这样的事情

54400

Spring 十个错误的使用姿势!

这样,对数据库后端进行更改将不需要在服务层进行任何额外的更改。...作为一名 API 开发者,理想情况下你希望覆盖所有面向用户的端点,并将他们转换为常见的错误格式。...(3) 记录关键数据 评估你的程序可能会在何处发生异常,并预先记录所有关键数据。如果发生错误,你将很高兴可以得到信息说明收到了哪些请求,并可更好地了解你的应用程序为什么会出现错误。...Spring 还允许通过 DeferredResult 类来进行异步请求处理。 6、错误六:不使用基于注解的验证 假设我们之前的 TopTalent 服务需要一个端点来添加新的 TopTalent。...9、错误九:无法接受依赖项注入 正确使用 Spring 的依赖注入意味着允许其通过扫描所有必须的配置类来将所有对象连接在一起;这对于解耦关系非常有用,也使测试变得更为容易,不是通过类之间的紧耦合来做这样的事情

72130

Spring Security OAuth 2开发者指南

(用户发布批准此处)/oauth/error(用于在授权服务器中呈现错误)/oauth/check_token(由资源服务器用于解码访问令牌) ,并且/oauth/token_key(如果使用JWT令牌...在XML中,元素具有一些可用于以类似方式更改默认端点URL的属性。.../oauth/authorize您可以从该请求中获取所有数据,然后根据需要进行渲染,然后所有用户需要执行的操作是回到有关批准或拒绝授权的信息。...自定义错误处理 授权服务器中的错误处理使用标准Spring MVC功能,即@ExceptionHandler端点本身的方法。...用户还可以WebResponseExceptionTranslator向端点本身提供这些端点,这是更改响应内容的最佳方式,不是渲染方式。

1.9K20

从0开始构建一个Oauth2Server服务 发起认证请求

要记住的是,访问令牌对客户端是不透明的,应该只用于发出 API 请求不是解释它们自己。...访问令牌可能因多种原因而过期,例如用户撤销应用程序,或者如果授权服务器在用户更改密码时使所有令牌过期。 如果您发出 API 请求并且令牌已经过期,您将收到一个表明此情况的响应。...您可以检查此特定错误消息,然后刷新令牌并再次尝试请求。 如果您使用的是基于 JSON 的 API,那么它可能会返回带有错误的 JSON 错误响应invalid_token。...在任何情况下,WWW-Authenticate标头也会有invalid_token错误代码。...,它可以使用之前收到的刷新令牌向令牌端点发出请求,并将取回可用于重试原始请求的新访问令牌。

13830

如何从Serilog请求日志记录中排除健康检查终结点

由于我没有配置任何运行状况检查200,因此只要应用程序正在运行,端点将始终返回响应: 在上面的示例中,向/healthz发送请求将调用运行状况检查终结点。...这里的主要问题是成功进行健康检查请求的日志实际上并未告诉我们任何有用的信息。它们与任何业务活动都不相关,它们纯粹是基础设施。这里如果能够跳过这些请求的Serilog请求摘要日志会很好。...定制用于Serilog请求日志的日志级别 在上一篇文章中,我展示了如何在Serilog请求日志中包括所选终结点。...如果这样做,我们将不会获得任何错误请求日志,Serilog中间件将变得毫无意义! 相反,我们希望将日志级别设置为Verbose 仅针对运行健康检查端点请求。...如果是,请求日志将使用Verbose级别写入,这通常会被过滤掉。为了更灵活,您可以自定义在这个帖子中显示的日志来处理多个端点名称,或者任何其他的标准。

1.3K10

有时 events 比 Webhooks 更好用

有了 Webhook 系统,系统 B 可以通过注册来接收有关系统 A 某些更改的通知。当系统 A 发生更改时,它通常以发出 HTTP POST 请求的形式将更改推送到系统 B。...这里的两个关键组件分别是: 主数据库记录最近更改所有内容 主数据库保留一个游标,用于跟踪每个 follower 数据库在更改日志中的位置 如果 follower 崩溃,当它恢复时,它可以在闲暇时浏览历史...事件对象自由嵌入了子对象,让我们无需轮询 API 即可全面了解发生更改所有内容。 因此,我们可以轮询 /events,不是通过监听 Webhooks 来保持最新状态。...如果我们部署了一个错误处理事件的错误,不用担心。我们可以部署一个修复程序并将游标倒回 /events,后者将重播它们。 我们的端点不需要消息总线。...在长轮询中,客户端发出标准 HTTP 请求。如果服务器没有任何新信息要交付给客户端,则服务器会将请求保持在打开状态,直到有新信息要交付为止。

1.2K10

REST API和GraphQL API的比较

主体包含客户端想要传输到服务器的数据,例如请求的有效负载。 GraphQL API GraphQL 是一种用于 API 的查询语言,也是使用现有数据完成这些查询的运行时。...由于请求需要时间才能到达正确的数据并提供相关信息,因此开发人员必须进行多次调用。 缓存 REST API 的所有 GET 端点都可以缓存在服务器上或通过 CDN。...Status Code REST GraphQL 200 Ok Ok 400 Bad Request - 401 Unauthorized - REST API 的错误可以有 200 以外的任何代码,...处理错误的客户端应该知道所有可能的代码。...GraphQL 中的任何合法答案都应该是 200,包括数据和错误响应。客户端工具将有助于更有效地管理错误错误作为特定错误对象下的响应主体的一部分进行处理

39410

【STM32F429】第9章 RL-USB各种USB描述符简介

例如,IP语音电话可能具有: 一个音频类接口,带有2个同步端点用于在每个方向上传输音频数据。 一个HID接口,带有一个用于内置键盘的IN中断端点。...当需要在运行时更改设备类或需要创建其他报告时,可能就是这种情况。...如果没有为设备选择任何类别,则不会加载任何标准USB驱动程序,并且开发人员必须提供自己的设备驱动程序。 例如,需要两个具有不同接口的设备。...字符串索引零用于所有语言,并返回一个字符串描述符,该描述符包含设备支持的两字节LANGID代码的数组。 LANGID代码的数组不是以NULL结尾的。...如果全速设备接收GetDescriptor()请求device_qualifier,它必须回应错误请求。然后,主机不得请求other_speed_configuration描述符。

52030

【STM32F407】第9章 RL-USB各种USB描述符简介

例如,IP语音电话可能具有: 一个音频类接口,带有2个同步端点用于在每个方向上传输音频数据。 一个HID接口,带有一个用于内置键盘的IN中断端点。...当需要在运行时更改设备类或需要创建其他报告时,可能就是这种情况。...如果没有为设备选择任何类别,则不会加载任何标准USB驱动程序,并且开发人员必须提供自己的设备驱动程序。 例如,需要两个具有不同接口的设备。...字符串索引零用于所有语言,并返回一个字符串描述符,该描述符包含设备支持的两字节LANGID代码的数组。 LANGID代码的数组不是以NULL结尾的。...如果全速设备接收GetDescriptor()请求device_qualifier,它必须回应错误请求。然后,主机不得请求other_speed_configuration描述符。

48910

【STM32H7】第9章 RL-USB各种USB描述符简介

例如,IP语音电话可能具有: 一个音频类接口,带有2个同步端点用于在每个方向上传输音频数据。 一个HID接口,带有一个用于内置键盘的IN中断端点。...当需要在运行时更改设备类或需要创建其他报告时,可能就是这种情况。...如果没有为设备选择任何类别,则不会加载任何标准USB驱动程序,并且开发人员必须提供自己的设备驱动程序。 例如,需要两个具有不同接口的设备。...字符串索引零用于所有语言,并返回一个字符串描述符,该描述符包含设备支持的两字节LANGID代码的数组。 LANGID代码的数组不是以NULL结尾的。...如果全速设备接收GetDescriptor()请求device_qualifier,它必须回应错误请求。然后,主机不得请求other_speed_configuration描述符。

53620

任意密码重置漏洞,复制密码重置链接漏洞的赏金就几千美金

假设目标是target.com,它是一个视频学习平台,您可以在其中上传有关任何课程或培训的视频,并与公共、私人或什至用于任何电子商务目的共享。目标是拥有许多不同的功能,包括团队管理和邀请用户加入团队。...它看起来像这样 请求端点是: target.com/json/reply/GetResetPasswordLinkRequest?userid=。...1.起初,我考虑将 userid 参数更改为其他用户 id 参数,即不是受邀用户而是非受邀用户或其他管理员的用户 id。 2.我更改请求中的用户标识并发送了请求。...即使密码重置链接显示此错误,密码实际上是在后端更改的。这只是前端的这个错误。 我立即尝试更改该平台上其他一些帐户的密码,因为用户 ID 是公开可见的。...他们根据他们的赏金等级奖励了我2000美金 提示和要点:有时即使出现错误,也要始终重新验证您尝试进行的更改。如果未经验证,我们可能会错过很多东西。 始终在响应中可见任何敏感信息的地方记录端点

26620

设计 API 的 22 条最佳实践,实用!

/version 用版本号响应对/version的请求。 /metrics 这个端点将提供各种指标,如平均响应时间。 也强烈推荐使用/debug和/status端点。 9....应该:http://api.domain.com/v1/shops/3/products 始终在API中使用版本控制,因为如果API被外部实体使用,更改端点可能会破坏它们的功能。 12....安全 在所有端点、资源和服务上实施HTTPS(tls加密)。 强制并要求所有回调url、推送通知端点和webhooks使用HTTPS。 21....错误 当客户端向服务发出无效或不正确的请求,或向服务传递无效或不正确的数据,服务拒绝该请求时,就会出现错误,或者更具体地说,出现服务错误。...当由于一个或多个服务错误拒绝客户端请求时,一定要返回4xx HTTP错误代码。 考虑处理所有属性,然后在单个响应中返回多个验证问题。 22.

1.2K10
领券