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

如何设计API返回码(错误码)?

—1— 前言 客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等。...API返回码的设计还是要认真对待,毕竟好的返回码设计可以降低沟通成本以及程序的维护成本。...对于后端开发来说,我们通常见到的都是: 2XX状态码,比如200->请求成功。 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,或者代码执行出错。...—3— 参数约定 虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂。 参考HTTP状态码的思路,我们对错误码进行分段。...—4— 个性化Message 通常我们的Message都是写给工程师看的,但是在不同的场景下,同样的错误,可能需要给用户看到不一样的错误提示。

79310

如何设计API返回码(错误码)?

一、前言 客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等 相信很多同学都吃过返回码定义混乱的亏,有的API返回码是int类型,有的是string类型...5XX 服务器错误,服务器在处理请求的过程中发生了错误 对于后端开发来说,我们通常见到的都是: 2XX状态码,比如200->请求成功, 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,...,我们对错误码进行分段 返回码值 说明 0 成功 99999 系统发生未知异常 10000-19999 参数校验错误 20000-29999 A步骤执行失败 30000-39999 B步骤执行失败 通过这样的设计...,不论是程序还是人都可以非常方便的区分API返回结果,关键是统一!...但是对于API来说,返回的信息又必须是准确的,但用户看到的就必须转译,这个转译的工作调用方可以做,但是通常API提供者来提供个性化的Message能力会更好 我们可以把转译的消息配置到数据库,并缓存到Redis

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

SpringBoot非官方教程 | 第十二篇:springboot集成apidoc

一、apidoc简介 apidoc通过在你代码的注释来生成api文档的。它对代码没有侵入性,只需要你写好相关的注释即可,并且它仅通过写简单的配置就可以生成高颜值的api接口页面。...通过命令安装: npm install apidoc -g 三、注释怎么写 @api @api {method} path [title] method:请求方法, path:请求路径 title...,例如:{Boolean}, {Number}, {String}, {Object}, {String[]} field:返回值字段名称 descriptionoptional(可选):返回值字段说明...account=sodlinken&password=11223344&mobile=13739554137&vip=0&recommend= * @apiSuccess (200) {String...} msg 信息 * @apiSuccess (200) {int} code 0 代表无错误 1代表有错误 * @apiSuccessExample {json} 返回样例:

1.1K70

Facebook将MySQL升级至8.0

在 5.6 中使用的某些 API 将在 5.7 中被弃用,并可能在 8.0 中被删除,这要求Facebook更新使用这些 API 的应用程序。...移植并提交到 8.0 分支的补丁使用 5.6 提交信息进行了注释。不可避免地会出现移植状态的差异,因为他们需要筛选大量补丁,这些注释帮助他们解决了这些问题。...对于每个应用程序工作负载,Facebook在 8.0 上构建测试实例并向它们重放影子流量查询。通过捕获并记录了从 8.0 服务器返回错误,发现了一些有趣的问题。但并非所有问题都在测试过程中被发现。...对于 JSON 函数,Facebook向 8.0 服务器添加了 5.6 兼容版本,以便应用程序可以在以后迁移到 8.0 API。...查询将返回意外错误或运行时间过长而超时。 内存使用与 5.6 相比有所增加,尤其是对于 MyRocks 实例,因为必须加载 8.0 中的 InnoDB。

95930

账户接管(Account Takeover)漏洞挖掘及实战案例全汇总

passwd进行注册,注册成功后重放此数据包,显示“此认证属于一个激活的账号”: 删除请求中除“username”和“password”之外的所有参数后,使用正确的密码和一个不正确的密码重放,回显不一致,错误密码显示错误...: 正确密码显示同上“已被激活”: 从而通过爆破获取正确密码: 2)Facebook验证码暴力破解 Facebook的主站设置速率限制及锁定机制,但子域beta.facebook.com通过短信/邮件找回密码时...,验证码OTP未进行速率限制,导致有效时间内可爆破6位验证码: 爆破成功跳转进入设置新密码界面: 3)邮箱设置+CSRF CSRF漏洞(传送门)中有涉及,/signup/email的API端点将账户与邮箱关联...如忘记密码,获取短信验证码后填写错误验证码,返回401: 将返回包中状态码401改为200,依旧失败: 将整个返回包修改为200,成功进入填写新密码的页面: TIPS:可先探测操作成功的返回包,并将错误返回进行整包替换...6)HPP任意密码重置 重置密码处结合HPP思路(传送门),请求 https://hq.breadcrumb.com/api/v1/password_reset参数: {"email_address":

4.5K20

API设计:先思考再编码

API响应中收集的Facebook状态消息的示例。...现在想象你是Facebook的工程师,负责这个API。有天您突然决定将id字段名称更改为message_id。嗯,这个小的变化可能破坏Facebook。真的。...总而言之,2xx 状态表示成功,4xx意味着客户端错误,5xx意味着服务错误。...6.使用4xx返回错误。 每个人都憎恨HTTP响应状态代码是2xx,却返回一个错误的消息!使用正确的代码: 401:未经授权的访问,授权过程未正确完成。...难以误用:如果发出了错误的请求,返回错误并提供信息。 简单是比复杂更好:简单的事情在每个方面都很容易。 在实现它之前使用你的API:创建一个模拟服务器来获得最终结果并演示。

1.1K30

视频 | MIT和FB搞了个视频数据集,让Youtube视频审查更容易

创建这样的数据集是一项非常艰巨的工作,因为它包含超过 50 万个视频,为 200 个不同的活动提供近 200 万个注释,并且还有很多预处理步骤需要执行才能使其可用。...本期论文即将介绍的这个项目,用到了麻省理工学院和 Facebook 联合创建的数据集,该数据集名为 SLAC(Sparsely Labeled ACtions),用于动作识别和定位。...它包含 520K 以上的未修剪视频和1.75M剪辑注释,涵盖 200 个动作类别。...在这个数据集中,神经网络在很多场景都会给出一个错误的逻辑答案。很简单,人类知道——我们可能会在一个装有攀岩墙的房间里,但我们不一定会锻炼;我们可能在游泳池附近,但我们不一定游泳。...创建这样的数据集是一项非常艰巨的工作,因为它包含超过 50 万个视频,为 200 个不同的活动提供近 200 万个注释,并且还有很多预处理步骤需要执行才能使其可用。 ? ?

1K50

认识 JS 静态类型检查工具 Flow

一、什么是 Flow Flow 是 facebook 出品的 JavaScript 静态类型检查工具 Vue.js 的源码利用了 Flow 做了静态类型检查,所以了解 Flow 有助于我们阅读源码 二...不需要在每次更改项目的时候完全从头运行类型检查,提高运行效率 Flow 和 Typescript 都是给 Javascript 增加类型检查的优秀解决方案,两者的简单对比如下: Flow TypeScript 公司 Facebook...在这种情况下,我们可以借助类型注释来指明期望的类型 类型注释是以冒号 : 开头,可以在函数参数,返回值,变量声明中使用 如果我们在上段代码中添加类型注释,就会变成如下: /*@flow*/ function...文件夹内 我们打开这个目录,会发现文件如下: flow ├── compiler.js # 编译相关 ├── component.js # 组件数据结构 ├── global-api.js...# Global API 结构 ├── modules.js # 第三方库定义 ├── options.js # 选项相关 ├── ssr.js

2.1K10

React Native探索(五)使用fetch进行网络请求

1.get请求 fetch API是基于 Promise 设计的,因此了解Promise也是有必要的,推荐阅读MDN Promise教程 。...在注释2处通过catch方法来处理请求网络错误的情况。除了上面这一种写法,我们还可以使用Request,如下所示。 ? 我们先创建了Request对象,并对它进行设置,最后交给fetch处理。...这次请求的响应状态status为200返回的数据是JSON格式的,用Charles抓包来查看返回的JSON,如下图所示。 ?...statusText (String) : 服务器返回的状态报告。 ok (boolean) :如果返回200表示请求成功,则为true。 headers (Headers) : 返回头部信息。...text():返回一个带有文本的Promise。 clone() :复制一份response。 error():返回一个与网络相关的错误

1.9K70

大厂都在实践的GraphQL,你了解吗?

前言 最近,GraphQL 在构建后端 API 方面获得越来越多大公司的青睐, 如 PayPal、Facebook、Hasura、去哪儿等公司都做了大量实践。...完成上述工作后,让我们来实现 GraphQL API! 实现 GraphQL 查询 API 让我们定义用于查询数据的 API。...我们使用@MutationMapping注释将修改操作名称映射到处理程序。 完成了这一步骤,我们就编写完成了所有处理程序。...第一个操作创建一个人,只返回 id 和 name,因为我们只对这两个属性感兴趣。同样,创建地址接口返回地址的类型和街道。 现在,让我们查询刚刚存储的数据。...每个错误都有一个错误消息、一个路径和一个查询中发生错误的位置,指示哪个字段导致了错误。 出现错误时,默认程序返回上述值。 我们可以通过创建自己的错误处理程序解析器来自定义返回错误的方式。

2.2K40
领券