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

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

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

1.4K10

如何设计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

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

    使用某个软件出现白屏测试员该如何排查原因?

    Network:查看资源加载状态(HTML/CSS/JS/API请求): 关键文件是否返回404(未找到)或500(服务器错误)。...API接口是否超时(Timeout)或返回异常数据(如空数据、错误状态码)。 Sources:检查关键代码是否正常加载,断点调试逻辑(如页面初始化函数)。...三、网络问题排查 API可用性:使用Postman或curl测试后端接口,确认返回状态码(如200 OK/503 Service Unavailable)。...移动端工具:Facebook的ATC或Charles设置限速。 检查网络连接:确保设备的网络连接是正常的。...第三方服务(如支付/地图API)是否超时或返回异常。 五、 缓存与本地存储 浏览器缓存 强制刷新(Ctrl+F5)或隐身模式测试,排除缓存文件损坏导致的白屏。

    1.5K10

    018_Web安全攻防实战:GraphQL注入原理、攻击技术与全面防御策略深度指南

    GraphQL基础概念与安全模型 2.1 GraphQL核心概念解析 GraphQL是由Facebook(现Meta)开发的一种开源数据查询语言和运行时,旨在通过提供一种比REST更高效、更灵活的API...GraphQL API 端点数量 多个专用端点 单一端点 访问控制 基于路径控制 需在resolver层实现 数据过滤 预定义的响应格式 客户端可选择返回字段 错误处理 状态码反映错误 状态码通常为200...100-200 中型应用 7-10 200-500 50-100 大型应用 10-15 500-1000 10-50 7.3 内省查询控制 控制内省查询是防止API结构被恶意探索的重要手段。...GraphQL端点暴露案例 事件概述:2021年,研究人员发现Facebook某些GraphQL端点存在配置错误,允许未授权访问内省查询,可能导致API结构泄露。...修复措施:Facebook修复了配置错误,在生产环境中正确禁用了内省查询。

    37710

    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。

    1.3K30

    账户接管(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":

    5.6K20

    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.4K70

    使用 Swagger 为 Go 项目生成 API 文档

    /docs --propertyStrategy snakecaseSwagger 注释格式Swagger 使用声明式注释来定义 API 的元信息。...以下是常用注释及其说明:通用 API 信息通常在 main.go 中定义,用于描述整个 API 的基本信息:// @title Swagger Example API// @version 1.0//...json// @Param id path string true "文章ID"// @Success 200 {object} Post "成功返回文章信息"// @Failure 400 {string...{object} Post "成功返回文章信息"// @Failure 400 {string} string "请求参数错误"// @Router /post/{id} [get]func GetPostById...总结通过 swag 和 gin-swagger,我们可以轻松为 Go 项目生成规范的 API 文档。只需要编写简单的注释,Swagger 就能自动生成交互式的文档页面,方便开发和调试。

    1.4K20

    API设计:先思考再编码

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

    1.4K30

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

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

    1.2K50

    认识 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.7K10

    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():返回一个与网络相关的错误。

    2.8K70
    领券