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

yii2 开发api接口时优雅处理全局异常方法

前言:个人觉得,学习或温习一套Web框架,在快速阅读一遍文档后,应从路由,控制器,请求/响应对象,数据模型(Logic,Dao,Entity),全局异常处理几个方面下手,这几项了解后,框架上手就游刃有余了...然后我比较喜欢在开工前整理好框架全局异常处理,方便写 api时错误统一响应。...在api接口开发过程中,我们需要对用户数据进行严格校验,防止非法输入对服务产生安全问题,在开发过程中,我比较喜欢即时以抛出异常方式中断请求处理,并以全局异常处理器格式化处理后统一返回客户端。...今天就把 yii2 自带全局异常处理器改写至对 api 友好(yii2 yii\web\HttpException默认对 web 请求友好,都是以text/html方式返回错误描述,对api不友好...友好错误异常处理器,这里我也只是简单响应格式改了一下,异常上下文还是用yii2自带处理

1.8K10

REST API有关幂等性等11条最佳实践

规则 #8:不要使用 404 来表示“未找到” HTTP 规范规定,应使用 404 来表示未找到资源。按照字面解释,如果向不存在 ID 提出 GET/PUT/DELETE 等请求,则应返回 404。...当调用(例如)GET /things/{thing_id}请求一个不存在东西时,响应应表明:1)服务器理解了您请求;2)没有找到该东西。遗憾是,404 响应并不能保证 #1。...HTTP 404 表示 "未找到内容",这与返回 HTTP 500 几乎一样--它可能意味着内容不存在,也可能意味着出了问题;客户端无法确定是哪种情况。...但几乎任何策略都比返回 404(实体未找到)要好。 规则#10:一定要使用结构化错误格式 如果您正在为一个简单网站构建后端,您可能可以忽略此部分。...在 409 响应正文中提供原始 ID 亮点:通过允许具有相同参数重复请求或在冲突时返回现有 ID,使 API 具有幂等性。

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

细读Yii2Response

细读Yii2Response 一个完整网络请求,最后都需要一个符合协议返回。Yii2在处理web请求之后,统一通过web/Response处理返回。...一个Response完整流程有哪些? 创建Response对象,设置Resonse响应格式json,html,xml等 触发前置事件,暴露操开发者在输出前对数据进行调整等 数据格式化。...在web/Response 文件中定义了状态码数组,几乎涵盖了所有的http状态码,并给出了标注状态码文字说明。如果想了解http状态码,看Yii2Response文件就足够了。...发送文件每次最多读取8M数据,防止占用过大内存 数据格式,支持多种数据格式html,json,xml并可以指定ResponseFormatter对数据格式进行扩展 Cookie处理,Yii2请求Cooke...同时提供前置事件,数据准备前置事件,后置事件开发者在不同情况下处理额外数据。代码在阅读起来非常明了。从头到尾,完整看一遍,就可以完全理解。以下是Response中两段代码。

98410

用 WebFlux 写个 CURD 是什么体验?

Reactive Relational Database Connectivity,并提出了 R2DBC 规范 API 用来评估可行性并讨论数据库厂商是否有兴趣支持响应异步非阻塞驱动程序。...按照 RESTful 规范,如果删除成功请求响应码就是 200,如果删除失败请求响应码就是 404,因此,我们开发出来接口如下: @DeleteMapping("/{id}") public Mono...,然后调用 flatMap,在 flatMap 中对数据进行删除处理,删除完成后,给出一个 200 响应码,如果查询时候没有查询到数据,就一个 404 响应码。...可以看到,删除成功后,响应码为 200: ? 删除失败后,响应码为 404: ?...如果修改数据不存在的话,就会给出一个 404 响应: ?

2.5K50

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

三 接口测试执行中需要比对数据库吗? 接口返回关键字段和字段值是需要校验,不然接口测试就没有意义了。 一般有两种方式: 1)数据库预置数据,接口校验返回; 2)接口调用,比对数据库查询结果。...1)响应码:检查响应码是否符合预期,用来判断测试用例是否执行成功(针对http接口); 2)关键:验证关键是否符合预期,用来判断测试用例是否执行成功; 3)正则匹配:当一个接口返回内容较多,并且有一定规律时...,网络代理可能会造成请求失败; 6.检查操作系统host文件,是否绑定了一个错误ip映射; 2)接口有响应但是返回了错误状态码 有些时候接口会返回一些错误HTTP状态码,需要根据不同状态码来确定具体原因...url权限,还有就是项目所用中间件,不允许远程访问(比如Apache); 404:资源未找到,导致这种情况原因很多,比如: url拼写错误; url后有空格; 项目没有启动成功; 请求协议不对,如http...以上 That‘s all 更多系列文章

55830

Python构建RESTful API指南

使用HTTP状态码:使用适当HTTP状态码来表示请求结果,如200表示成功,404表示资源未找到,500表示服务器错误等。...错误处理:在API中实现统一错误处理机制,对于常见错误情况(如资源未找到、权限不足等),返回适当HTTP状态码和错误信息,以便客户端能够正确处理错误情况。...时,良好日志记录对于跟踪和调试问题至关重要,而性能优化则可以提高API响应速度和稳定性。...时,良好日志记录对于跟踪和调试问题至关重要,而性能优化则可以提高API响应速度和稳定性。...同时,良好日志记录和性能优化可以帮助开发人员更好地跟踪和调试问题,并提高API响应速度和稳定性。

24030

.net 温故知新【12】:Asp.Net Core WebAPI 中Rest风格

RPC RPC(Remote Procedure Call),远程过程调用),这种RPC形式API组织形态是类和方法形式。...所以API请求往往是一个动词用来标识接口意思,比如 https://xxxx/GetStudent?...REST形式API组织形态是资源和实体,请求路由可以看出对资源访问,规范统一接口自解释。 比如 https://xxxx/Student/1 用Get方法调用就是获取编号为1学生。...如果我们严格按照Rest风格设计接口的话,需要对技术人员有很高要求,需要去划分不同业务不同资源定位,而且有些业务也找不到准确谓词去定义,响应状态码有限无法表达准确意思,或者是时间上来不及等等原因...而在Rest 中Post通常用201返回新增成功,delete 删除数据不存在返回404,但是404大家知道可能也许是url错误,所以表诉不清。

24240

HTTP 基础概念

⽹络请求和传输 HTML 内容。...image.png HTTP 工作方式 浏览器 用户在地址栏输入 URL -> 回车 -> 浏览器拼装 HTTP 报文并发送请求到服务器 -> 服务器处理请求后发送响应报文浏览器 -> 浏览器解析响应报文并使用渲染引擎显示到界面...APP 用户通过点击或其它交互触发联网需求 -> APP 代码执行调用拼装 HTTP 报文并发送请求到服务器 -> 服务器处理请求后发送响应报文手机 -> 手机接收到响应报文并做相应处理(接收到...Body 一般用于下载比较大文件,从响应报文头获取文件大小等属性 状态码(Status Code) 状态码全部表现为三位数字,用于对应响应结果类型描述(如「200 请求成功」 「404 内容未找到...用途是尽早响应,减少⽤用户等待。

82710

什么是Ajax以及ajax请求步骤

2.Ajax请求步骤 (1)创建`XMLHttpRequest`对象,也就是创建一个异步调用对象; (2)创建一个新`HTTP`请求,并指定该`HTTP`请求方式、`URL`及验证信息; (3)设置响应...3.XMLHttpRequest对象 (1)对象类型API; (2)在浏览器环境使用; (3)用于客户端和服务端数据传递和接收; (4)用于请求XML数据(JSON/TEXT)。...(禁止)服务器拒绝请求 404:(未找到)服务器找不到请求页面 408:(请求超时)服务器等候请求发生超时 500:(服务器内部错误)服务器遇到错误,无法完成请求 6.onload和onreadystatechange...)创建一个新`HTTP`请求,并指定该`HTTP`请求方式、`URL`及验证信息; (3)设置响应`HTTP`请求状态变化函数; (4)... 200:(成功) 403:(禁止)服务器拒绝请求 404:(未找到)服务器找不到请求页面 <br /

2.2K20

Nginx code 状态码说明

一个普通http请求处理流程,如上图所示: A -> client端发起请求nginx B -> nginx处理后,将请求转发到uwsgi,并等待结果 C -> uwsgi处理完请求后,返回数据nginx...这些都代表,在nginx设置超时时间内,上游uwsgi没有正确响应(但是是有响应,不然如果一直没响应,就会变成504超时了),因此nginx这边状态码为502。...因此,access_log中看到是503 3)499 client发送请求后,如果在规定时间内(假设超时时间为500ms)没有拿到nginx响应,则认为这次请求超时,会主动结束,这个时候nginx...404请求网页不存在 499:客户端主动断开了连接。500:服务器遇到错误,无法完成请求。502:服务器作为网关或代理,从上游服务器收到无效响应。...401 (未授权) 请求要求身份验证。 对于需要登录网页,服务器可能返回此响应。 403 (禁止) 服务器拒绝请求404未找到) 服务器找不到请求网页。

4.5K30

AJAX+JSON总结

ajax原理 AJAX是基于现有的Internet标准,并且联合使用它们: XMLHttpRequest 对象 (异步与服务器交换数据) JavaScript/DOM (信息显示/交互) CSS (数据定义样式...0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪 status 200: "OK" 404: 未找到页面...0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪 status 200: "OK" 404: 未找到页面 在 onreadystatechange...method:请求类型;GET 或 POST url:文件在服务器位置 async:true(异步)或 false(同步) send(string) 将请求发送到服务器。...string:仅用于 POST 请求 method:请求类型;GET 或 POST url:文件在服务器位置 async:true(异步)或 false(同步) send(string) 将请求发送到服务器

1.9K20

API设计:先思考再编码

API是定义应用程序接口通用术语,换句话说,定义了用户(人或机器)如何与程序交互。在Web开发世界中,API通常是响应客户端结构化文本数据请求网站端点集合。...一个JSON值一千 让我们看一个API响应例子: { "data": [ { "story": "Jonatas Baldin was writing a blog post....其主要组成部分有: URL:您资源在Web位置,您端点地址。一个示例是使用http://example.org/users列出您用户。 请求方法:客户端希望在特定端点执行操作。...404:着名未找到,表示资源不可用。 7.请清楚地描述您错误 当发生问题失败时,通知客户端发生了什么以及如何恢复。...难以误用:如果发出了错误请求,返回错误并提供信息。 简单是比复杂更好:简单事情在每个方面都很容易。 在实现它之前使用你API:创建一个模拟服务器来获得最终结果并演示。

1.1K30

Laravel API教程:如何构建和测试RESTful API

PUT动词另一个要求是幂等,在这种情况下,基本意味着您可以发送该请求1,2或1000次,结果将相同:数据库中一个更新资源。...404未找到。当没有找到资源时,这将由Laravel自动返回。 500: 内部服务器错误。理想情况下,你不会明确地返回这个,但如果有意外中断,这是你用户将要收到。 503: 暂停服务。...相当自我解释,还有一个不会被应用程序显式返回代码。 发送正确404响应 如果您尝试获取不存在资源,则会抛出异常,您将收到整个堆栈跟踪,如下所示: ?...您可以使用许多外部工具来测试您API; 然而,Laravel内部测试是一个更好选择 - 我们可以拥有测试API结构和结果所有好处,同时保留对数据库完全控制。...(401); } } 重要是要注意提示,在测试期间,Laravel应用程序不会在新请求再次实例化。

20.3K20
领券