首页
学习
活动
专区
圈层
工具
发布

技术随笔:Rest Api设计中处理业务错误的一些思考

对于Rest Api中要如何处理业务错误这个事情,这并不算是一个非常大的问题。事实上,对大多数架构师来说,可能很多人都不会太在意这个点。...1. http响应码 我们都知道,http响应码是有它的标准含义的,一般而言,笔者建议遵守这个标准,http响应码从1XX到5XX都有其特定的意义,但在Rest Api中,使用最多的可能还是以2XX和4XX...如上述使用的code值,当为特定值是(如0)表示业务上成功,而其它值则表示不同的业务错误。而成功的响应则放到诸如data字段中。 这种做法是否有合适与优雅?...比如:我们需要统计或监控基于IP或客户的维度,某个API调用了多少次,成功了多少次,失败了多少次。...这样的场景,无论是自己编码实现,还是通过类似一些ELK等工具来分析实现,或是直接从nginx日志中来分析,如果采用上述设计下,都会加大这个工作量,甚至一些场景下无法实现。

2.3K10

总结最近半年对Elasticsearch开源项目的贡献

修复reindex api bug issue: #52786 PR: #54901 调用reindex api,当max_docs参数API返回结果总量不准的bug issue: #52801 PR: #53155 调用GET _search/template API时,如果设置了rest_total_hits_as_int...时,如果传入的docs参数是空列表,则什么结果都不会返回。...>时,需要删除所有的以policy_name开头的索引,因为代码直接通过通配符进行删除,如果设置了action.destructive_requires_name参数为true,则删除enrich policy...实际上,ES对所有类型的block,对应的http状态码都设置为403, 这就会导致一个问题,在部分客户端比如rest client碰到403的状态码,是不会对写入请求进行重试的,直接丢弃掉请求,导致数据丢失

2.1K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    实际上在工作中对api接口规范、命名规则、返回值、授权验证等进行一定的约束,一般的项目api只要易测试、足够安全、风格一致可读性强、没有歧义调用方便我觉得已经足够了,接口是给开发人员看的,也不是给普通用户去调用...请求授权 1.REST的来源 REST:Representational State Transfer(表象层状态转变),如果没听说过REST,你一定以为是rest这个单词,刚开始我也是这样认为的,...3.统一的接口 这个才是REST架构的核心,统一的接口对于RESTful服务非常重要。客户端只需要关注实现接口就可以,接口的可读性加强,使用人员方便调用。...提示:REST架构中的设计准则中,只有按需编码为可选项。如果某个服务违反了其他任意一项准则,严格意思上不能称之为RESTful风格。 3.RESTful使用应该注意的问题 1....HTTP Method 详细解释 返回状态码 GET 获取对象或集合 200成功、401没有授权、403访问禁止、404没有资源、参数错误、406请求格式不正确、410资源被删除、500服务器内部错误

    1.6K30

    API自动化测试指南

    大多数功能测试都涉及测试网页或表单等用户界面,而API测试涉及绕过用户界面并通过调用其API直接与服务程序通信。...基本思想是,您正在使用工具进行性能测试,但是在针对您的API运行例如负载测试之前,需要确保它实际上可以正常工作。因此,您想先进行功能测试,然后可以利用功能测试脚本完成性能测试。...因此,API测试脚本是性能测试工作流程中的一大优势。 API测试工具如何选择 您可以使用许多工具来帮助您进行API测试自动化。 如何测试Web服务 测试任何其他应用程序一样!...从服务器返回的响应也包含三个部分,就像我们在HTTP请求中看到的那样: 响应行(状态码) 标头信息 包含响应中所有文本的正文 HTTP状态码 在我们的示例中,状态代码为200,表示一切正常。...URI语法允许您指定一个查询,该查询从REST API返回所需的信息。REST系统的主要元素是: 资源是客户端请求从主机获取的信息,例如网页或数据库记录。 资源标识符是用于命名资源的URI。

    2.3K00

    REST API 设计最佳实践:如何构建、设计和使用 API ?

    作为一名开发者,我很幸运能够在工作中使用一些仍然存在的SOAP服务。但是,我主要接触的是REST,这是一种基于资源的API和Web服务开发架构风格。...在处理应用程序/编程客户端(例如,通过Python中的requests库与您的API交互的另一个服务/API)时,这一点尤为重要——其中一些客户端依赖于此标头来准确解码响应。 3....有一天,当我将REST API集成到我的一个项目中时,每次调用都收到HTTP 500内部错误。...了解401未授权和403禁止之间的区别 如果我每看到一次开发人员甚至有经验的架构师搞砸这个问题就能得到一个25美分硬币……在处理REST API中的安全错误时,很容易弄混错误是与身份验证还是授权(又称权限...403 禁止。 12. 充分利用 HTTP 202 Accepted 我认为202 Accepted是一个非常方便的替代201 Created的选项。它基本上意味着: 我,服务器,已经理解了你的请求。

    2.2K40

    5个REST API安全准则

    只允许需要的动词,其他动词将返回适当的响应代码 ( 例如,禁止一个403)。 (3)保护特权操作和敏感资源集合 并非每个用户都有权访问每个Web服务。...如果不是,拒绝该输入。 现实情况是,任何人都可以调用您的Web服务,所以假设每秒执行上百次失败的输入验证的人是没有好处的。考虑将API限制为每小时或每天一定数量的请求,以防止滥用。...不要简单地将Accept头复制到响应的Content-type头。 如果Accept报头没有包含允许的类型中任何一个,则需要拒绝请求(理想情况下使用406 Not Acceptable响应)。...403禁止 -当身份验证成功,但身份验证的用户没有权限使用请求的资源。 404未找到 -当请求一个不存在的资源。 405不允许的方法 -意外的HTTP方法的错误检查。...403“禁止”的真正含义未经授权,“我明白您的凭据,但很抱歉,你是不允许的!” 概要 在这篇文章中,介绍了5个RESTful API安全问题和如何解决这些问题的指南。

    5.1K10

    走进 HTTP 协议 | 青训营笔记

    HTTP是什么 HTTP(Hypertext Transfer Protocol)是一种用于在Web浏览器和Web服务器之间传输数据的协议,是一个客户端-服务器协议,客户端向服务器发送HTTP请求,服务器则返回...HTTP协议的工作流程通常如下: 客户端向服务器发送HTTP请求,请求包括请求方法、URL、HTTP版本、请求头等信息。...客户端接收到HTTP响应后,根据响应信息进行处理,通常是解析响应正文并显示在浏览器中。 HTTP协议是Web应用程序的基础,支持各种Web应用程序,如浏览器、Web服务、Web API等。...HTTP状态码 由Web服务器向用户代理(例如浏览器)返回的响应的三位数字代码 常见的HTTP状态码及其含义: 200 OK:请求成功,服务器正常返回页面; 301 Moved Permanently:...Forbidden:禁止访问,服务器拒绝请求,可能是权限不足或者访问资源被禁止; 403 禁止:禁止 404 Not Found:未找到,请求的资源不存在; 500 Internal Server Error

    41710

    程序员入职避免挨骂小知识-RESTful风格

    用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。     ...无需等待对方的开发工作结束,提高开发效率。 可应对复杂多变的前端需求。 增强代码可维护性。 四、RESTful风格     REST是一种设计API的模式(风格)。最常用的数据格式是JSON。...由于JSON能直接被JavaScript读取,所以,使用JSON格式的REST风格的API具有简单、易读、易用的特点。满足这些约束条件和原则的应用程序或设计就是 RESTful 应用。...因此,如果客户端想要操作服务器,须使用HTTP方法去促使服务器端资源发生状态改变。 4.2.3、使用统一接口     REST要求,必须通过统一的接口来对资源执行各种操作。     ...403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

    88130

    前端开发面试题答案(五)

    优雅降级:Web站点在所有新式浏览器中都能正常工作,如果用户使用的是老式浏览器,则代码会针对旧版本的IE进行降级处理了,使之在旧式浏览器上以某种形式降级体验却不至于完全不能用。...如:默认使用flash上传,但如果浏览器支持 HTML5 的文件上传功能,则使用HTML5实现更好的体验; 5、是否了解公钥加密和私钥加密。...HTTP 401.4- 未授权:授权被筛选器拒绝 HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败 402——保留有效ChargeTo头响应 403——禁止访问...HTTP 502 - 网关错误 HTTP 503:由于超载或停机维护,服务器目前无法使用,一段时间后可能恢复正常 10、一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?...,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304; (8)浏览器开始下载html文档(响应报头,状态码200),同时使用缓存; (9)文档树建立,根据标记请求所需指定MIME

    2.3K20

    如何修复WordPress内容更新和发布失败错误

    如果这是导致您网站上出现错误的原因,您需要让REST API再次工作以修复它。...如果您看到此消息,开始故障排除的明智方法是测试REST API以确保其正常工作。 您可以在WordPress中使用Site Health工具直接执行此操作。...这可能是“ 401未授权”响应、操作超时、“403 Cookie Nonce Is Invalid”消息或其他错误。...特定的插件或防火墙应用程序,例如Cloudflare,如果您认为您的站点不可或缺的工具正在拦截REST API,并且您无法自己解决问题。...幸运的是,这些错误有一些常见的原因,您可以快速排除故障以使事情恢复正常。 如果您在WordPress区块编辑器中收到“更新失败”或“发布失败”消息,请尝试: 确定REST API是否被拦截。

    8.1K31

    用于实现用python和django编写的图像分类的Keras UI

    KerasUI是一种可视化工具,可以在图像分类中轻松训练模型,并允许将模型作为服务使用,只需调用API。...如何使用API UI或邮递员来测试API 在Web UI中看到的所有内容都可以使用API进行复制。 API使用情况 此应用程序使用oauth2来验证请求,因此需要的第一步是获取令牌。...它是如何构建的 该应用程序分为3个模块: 管理部分: Web UI,模块和所有核心内容 后台工作者:是一个可以在后台执行的Django命令,用于根据数据集训练模型 API:此部分公开API以从外部与应用程序交互...例如,这允许从第三方应用程序向数据集添加项目。...='rest_framework')), ] urlpatterns += staticfiles_urlpatterns() 训练 算法非常简单: 从数据集中获取所有图像 将它们标准化并添加到带标签的列表中

    3.4K50

    前端妹子聊HTTP协议

    HTTP协议是建立在TCP协议之上的一种应用,最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。...80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。...eg:HTTP/1.1 200 OK (CRLF) 4、RESTful API REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统...,比如 web 应用程序。...值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。 REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

    83220

    让你的Django应用变DRY的几个最佳实践

    DRY是Don't-Repeat-Yourself的缩写,是一种代码编写的原则,即不要重复自己的工作。我个人有些代码洁癖,凡是发现我需要复制粘贴代码的地方,就想着能怎样去除重复的工作。...PermissionDenied() def get_user(self, user_id): # 若通过浏览器访问则需要定义次方法,获取已登录的用户对象 # 若只有RESTful调用则跳过...,因为它自带的方法的响应是默认的,如果要挨个重载就无法利用到ModelViewSet的懒人特性 所以我们需要将这种格式自定义收拢到一处,做到使用时无感知,响应自动形成期望的格式。...这里可以按需重载,如果浏览器和后端响应都需要,则都重载,如果只需要JSON响应,则重载第一个就可以了,这里两个类的重载点不一样: Python class JSONRenderer(renderers.JSONRenderer...process_exception函数 DRF的EXCEPTION_HANDLER配置 而其中EXCEPTION_HANDLER的作用时间早于中间件,这就导致了有些DRF内置的异常,在到达中间件之前已经渲染为正常的响应了

    2.2K50

    聊一聊依赖登录状态的接口如何进行测试?

    比如用Postman的话,可能需要先发一个登录请求,然后从响应中提取Token,再在后续请求的Header里加上这个Token。...在测试用例设计上需要覆盖正常情况和异常情况。比如已经登录的情况下调用接口是否正常,未登录时是否返回401,还有Token过期的情况如何处理。...profile"response = requests.get(profile_url, headers=headers)Cookie 传递(如 Session):cookies = response.cookies # 从登录响应中获取...profile"response = requests.get(profile_url, headers=headers)Cookie 传递(如 Session):cookies = response.cookies  # 从登录响应中获取...测试方法:用户 A 登录后,调用接口时篡改资源 ID(如 /user/123/orders 改为 /user/456/orders)。预期结果:返回 403 或 404,禁止访问他人数据。

    77320

    Restful API设计规范

    RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。...RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。...REST架构,从个人角度理解,核心做了两件事情 资源定位 资源操作 其实从REST的定义中就能看出来,表述层对应的就是描述资源的位置(资源定位),状态转移就是对资源的状态进行变更操作(增删改查) 下面举个实际的例子...HTTP Method rest的定义,第一条叫做资源定位,如果还不理解,那让我们再想想URL的定义,叫做统一资源定位符,也就是说url是用来表示资源在互联网上的位置的,所以说在url中不应该包含动词,...403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

    1.7K30

    接口自动化面试题放送,助你离Offer又近一步!

    业务逻辑:是否依赖业务 1)接口实现逻辑; 2)业务逻辑覆盖(语句/条件/分支/判定/…); 举例:该接口调用之前,需要调用登录接口,如果不登录也能请求数据,不符合业务逻辑。...九 API测试有哪些优势? API是(Application Programming Interface),即应用程序编程接口。API是一组用于构建软件应用程序的规程,协议和工具。...API充当软件应用程序之间的接口,并允许两个软件应用程序相互通信。API是一组软件功能,可以由其他软件执行。API测试具备如下优势: 更快及更高的测试覆盖率。 API测试有助于我们降低测试成本。...排查思路: 400:客户端请求错误,比如请求参数格式错误(如json字符串不合法); 401:未授权,比如在请求header里,缺乏必要的信息头(如token、auth等字段); 403:禁止,常见的原因是用户的账号没有对应的...从以下两种情况分析: 如果单次调用接口就报该错误,说明是后端服务器配置有问题,或者服务不可用,挂掉了; 如果并发压测时出现此错误,说明是后端压力太大,出现异常,此问题一般是后端出现响应时间过长或者无响应造成

    82130

    标准化API设计流程!

    但是,它将复杂性转移到客户端,如果没有适当的保护,可能会允许滥用查询 缓存策略可能比REST更复杂 ❝REST和GraphQL之间的最佳选择取决于应用程序和开发团队的具体要求。...REST和GraphQL都是公开数据和支持现代应用程序的有效选择。 gRPC是如何工作的?...从用户的角度来看,它就像一个本地函数调用。 上图说明了gRPC的总体数据流 步骤1:从客户端进行REST调用。请求体通常是JSON格式。...步骤6 - 8:支付服务(gRPC服务器)从网络接收数据包,对其进行解码,并调用服务器应用程序。 步骤9 - 11:结果从服务器应用程序返回,并进行编码并发送到传输层。...如果存在缓存未命中,则客户端可以从数据库查询。像Redis这样的缓存将数据存储在内存中,因此数据访问比数据库快得多。 有效载荷压缩 可以使用gzip等压缩请求和响应,以便传输的数据大小要小得多。

    1.1K10

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

    下面介绍一种API架构风格,也是目前主流的API设计风格,你或许一直在使用。 ? RESTful API 示例 REST是什么? 如果有人这么问你,你可以非常言简意赅的告诉他:“REST是一个风格!”...REST的六个限制 REST给出了6种约束条件,通信两端在遵循这些约束后,就能提高工作效率,改善系统的可伸缩性、可靠性和交互的可见性,还能促进服务解耦。...因为如果服务端要管用户的会话信息的话,一旦服务端出错出现故障用户会话信息就会完全丢失,想要恢复起来机会是不可能的,所以说它的可靠性就会很差,但如果服务端不管你用户会话信息的话,那么从故障中恢复起来就回非常的容易...是指所有服务端响应都要被标为可缓存或不可缓存,响应的资源可以被标记为可缓存或禁止缓存,如果可以缓存,那么客户端可以减少与服务器通信的次数,降低延迟、提高效率。...403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

    1.2K30
    领券