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

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

—1— 前言 客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等。...API返回码的设计还是要认真对待,毕竟好的返回码设计可以降低沟通成本以及程序的维护成本。...—3— 参数约定 虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂。 参考HTTP状态码的思路,我们对错误码进行分段。...通过这样的设计,不论是程序还是人都可以非常方便的区分API的返回结果,关键是统一!...—4— 个性化Message 通常我们的Message都是写给工程师看的,但是在不同的场景下,同样的错误,可能需要给用户看到不一样的错误提示。

1.4K10

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

一、前言 客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等 相信很多同学都吃过返回码定义混乱的亏,有的API用返回码是int类型,有的是string类型...,有的用0表示成功,又有的用1表示成功,还有用”true”表示成功,碰上这种事情,只能说:头疼 API返回码的设计还是要认真对待,毕竟好的返回码设计可以降低沟通成本以及程序的维护成本 二、HTTP状态码参考...,我们对错误码进行分段 返回码值 说明 0 成功 99999 系统发生未知异常 10000-19999 参数校验错误 20000-29999 A步骤执行失败 30000-39999 B步骤执行失败 通过这样的设计...,不论是程序还是人都可以非常方便的区分API的返回结果,关键是统一!...但是对于API来说,返回的信息又必须是准确的,但用户看到的就必须转译,这个转译的工作调用方可以做,但是通常API提供者来提供个性化的Message能力会更好 我们可以把转译的消息配置到数据库,并缓存到Redis

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

    资产瞎配模型(二):对瞎配(一)中净值计算错误的纠正

    上上周发的那篇资产瞎配模型,事实证明,果然是瞎配,有大佬指出组合净值计算有一定的问题,所以这里对净值计算部分及进行改正,重新计算结果。...接下来对各个模型的代码和结果进行修改,代码可以留意下,再看看图就行了,文字可以忽略了,基本没变化。...01 理论模型 资产配置是根据投资者的收益风险偏好及不同资产特性,将资金配置于多种资产类别的一种投资策略,目的在于分散风险,是对组合收益和组合风险的权衡。 首先给出一些符号定义 ? ?...04 等资金 有了之前的推导可以看出,等资金的推导逻辑是错误的,权重并非是份额的占比,而是价值的占比,所以等资金就是等权重,这个就略过了。...A股大概是怎么都不愿意配一点了,为了避免单个资产权重过高或者过低的问题,对资产权重加以限制。 09 Risk Parity + w<=40% 滚动 ? ? 递归 ? ?

    1.8K30

    APT分析报告:04.Kraken新型无文件APT攻击利用Windows错误报告服务逃避检测

    这是作者新开的一个专栏,主要翻译国外知名的安全厂商APT报告文章,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助。...这篇文章将介绍一种新型无文件APT攻击Kraken,它会利用Windows错误报告服务逃避检测。其中,DllMain函数反分析检查,以确保它不在分析/沙箱环境或调试器中运行非常值得我们学习。...Malwarebytes研究人员发现了一种名为Kraken的新攻击,该攻击利用Windows错误报告(WER)服务以逃避检测。...2020年9月17日,我们发现了一种名为Kraken的新攻击,该攻击将其有效载荷注入到Windows错误报告(Windows Error Reporting,WER)服务中,作为一种防御规避机制。...如果HTTPSendRequestExA的返回值为true,则表示请求成功,并且代码继续执行下一步。

    1.4K30

    全球IP归属地查询免费API详细指南

    概述接口盒子提供的全球IP归属地查询服务是一个功能强大、完全免费的API接口,支持IPv4和IPv6地址查询,能够返回详细的IP地理位置和运营商信息。该服务结合大数据多通道查询,具有高稳定性和准确性。...字符串是用户中心通讯秘钥ip字符串否欲查询的IP地址(IPv4/IPv6),不填则默认为请求接口IPtd整数否查询通道(0-2),0为综合通道(默认)返回参数说明成功查询将返回包含以下字段的JSON数据...=IPQuery(USER_ID,USER_KEY)#查询指定IPresult=ip_query.query("112.192.49.243")#查询本机IP#result=ip_query.query...)}")else:print(f"查询失败:{result.get('msg','未知错误')}")注意事项用户认证:必须使用自己的用户ID和KEY,避免使用示例中的公共测试凭证频率限制:虽然接口免费且无每日上限...,但存在每分钟调用频次限制准确性说明:不同查询通道的结果可能略有差异,建议根据实际需要选择合适的通道错误处理:在实际应用中应添加完善的错误处理机制生产环境:在生产环境中使用时应考虑添加重试机制和缓存策略应用场景该

    58000

    技术专题:API资产识别大揭秘(一)

    这就导致当前大多数自动识别工具的结果将URL错误地识别为API。实际上URL是统一资源定位符,是对可以从互联网上得到资源的位置和访问方法的一种简单表示。用于访问特定的网页、图像或文件。...除此之外,流量还原API资产的优势还在于:API识别是持续进行的过程,一旦发现新API,应立即规范补充信息。通过流量还原,我们可以从各个维度监测API资产,并持续对其进行监测。...经过上述问题的解答,相信大家对API资产梳理也有所了解。接下来,我们将介绍API资产识别的关键技术,以便帮助大家理解如何从流量中准确识别API资产。...正确返回{ "data": { ... }}# 执行时发生错误{ "errors": [ ... ]}使用场景:比较复杂的数据查询和获取、需要从多个平台进行数据查询并集成、前后端分离模式下,需灵活开发...,也就是说,GraphQL API存在一个类似于JSON的特殊格式,且请求中的参数和返回结果一一对应。

    2.2K21

    我们为什么选 Rust 重写核心服务?

    一些 Kraken 工程师开始拿它做实验,并视其为构建可以长期满足 Kraken 后端需求的系统的一种选项:性能匹敌 C++、现代语言构造有助于准确地建模业务逻辑和错误用例、对异步编程有着一流支持、编译时线程安全...系统的运行速度取决于最慢的部分,虽然我们的 PHP 核心服务不是 Kraken 的唯一瓶颈,但它们的 IO 性能要比 Rust 的低一些,并且对负载更敏感。...理想情况下,每个易错函数将具有自己的错误枚举来精确捕获其错误并处理,但实际上它过于冗长,结果导致了不太精确的错误特征(trait)或每个模块使用一个枚举。...但它还是有一些改进余地: 与 Rust 的大多数部分不同,async 函数看起来有点像无害的常规函数,但它们可能不会完全执行(更确切地说,它们返回的 Future 可能不会被轮询完成)。...我们还在聘请测试工程师来帮助我们使用 Rust 和 Cucumber 测试 API。

    95220

    我们为什么选 Rust 重写核心服务?

    一些 Kraken 工程师开始拿它做实验,并视其为构建可以长期满足 Kraken 后端需求的系统的一种选项:性能匹敌 C++、现代语言构造有助于准确地建模业务逻辑和错误用例、对异步编程有着一流支持、编译时线程安全...系统的运行速度取决于最慢的部分,虽然我们的 PHP 核心服务不是 Kraken 的唯一瓶颈,但它们的 IO 性能要比 Rust 的低一些,并且对负载更敏感。...理想情况下,每个易错函数将具有自己的错误枚举来精确捕获其错误并处理,但实际上它过于冗长,结果导致了不太精确的错误特征(trait)或每个模块使用一个枚举。...但它还是有一些改进余地: 与 Rust 的大多数部分不同,async 函数看起来有点像无害的常规函数,但它们可能不会完全执行(更确切地说,它们返回的 Future 可能不会被轮询完成)。...我们还在聘请测试工程师来帮助我们使用 Rust 和 Cucumber 测试 API。

    80920

    企业风控数据集成:车辆过户查询API在车贷与交易场景的应用

    消除二手车交易的信息迷雾:基于车架号的历史溯源方案在二手车交易、汽车金融信贷以及车辆资产评估中,最大的痛点往往源于“信息不对称”。...该方案能够毫秒级返回车辆的完整过户轨迹,帮助企业在贷前审核或收车定价环节,精准识别“高频交易”等潜在风险特征,构建数据驱动的资产安全护城河。..._decrypt_data(encrypted_res)returnjson.loads(decrypted_res)else:print(f"API错误:{res_json.get('message'...exceptrequests.exceptions.RequestExceptionase:print(f"网络请求异常:{e}")exceptExceptionase:print(f"系统未知错误:{...e}")#调用示例#client=VehicleHistoryClient("YOUR_ACCESS_ID","YOUR_ACCESS_KEY_HEX")#history=client.query_transfer_history

    9010
    领券