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

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

—1— 前言 客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等。...API返回码的设计还是要认真对待,毕竟好的返回码设计可以降低沟通成本以及程序的维护成本。...—3— 参数约定 虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂。 参考HTTP状态码的思路,我们对错误码进行分段。...我们可以把转译的消息配置到数据库,并缓存到Redis或者API本机。 然后在请求处理结束即将返回的时候,根据application_id+code,去匹配替换message。...—5— 返回信息的统一处理 有了统一的code,我们就可以通过Nginx或者APM工具统计API请求Code数量及分布信息。 我们可以根据单位时间内99999的数量来做API的异常告警。

78610

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

一、前言 客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等 相信很多同学都吃过返回码定义混乱的亏,有的API返回码是int类型,有的是string类型...分段 分段描述 1XX 信息,服务器收到请求,需要请求者继续执行操作 2XX 成功,操作被成功接收并处理 3XX 重定向,需要进一步的操作以完成请求 4XX 客户端错误请求包含语法错误或无法完成请求...5XX 服务器错误,服务器在处理请求的过程中发生了错误 对于后端开发来说,我们通常见到的都是: 2XX状态码,比如200->请求成功, 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,...三、参数约定 虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂 字段 类型 说明 code int 返回码 message string 返回码说明 参考HTTP状态码的思路...,我们对错误码进行分段 返回码值 说明 0 成功 99999 系统发生未知异常 10000-19999 参数校验错误 20000-29999 A步骤执行失败 30000-39999 B步骤执行失败 通过这样的设计

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

HTTP请求返回415错误码定位解决

今天在工作中,发现我再调用外部API接口的时候,发现一个奇怪的问题,就是我Eclipse中写代码调用外部API接口时返回HTTP状态码是415,但是我将相同的报文放在HttpRequester里面请求的时候却又可以拿到正常返回结果...,而不是415错误。...首先我们还是看下HTTP的状态码关于415返回码的说明吧。...415 Unsupported Media Type 服务器无法处理请求附带的媒体格式 乍看之下,当时并没有看出来是什么意思,后来通过度娘搜索了下,觉得应该是跟发送HTTP报文的请求头中的Content-Type...这时候才发现原来根本原因在这呢,应该是HttpRequester在发送请求的时候帮我们自己去做了一些处理,如果发送的是json数据自动帮我们加上了Content-Type字段的声明,从而能够正常返回结果

2.5K20

jmeter参数化csv+用户参数配合(请求加密,返回解密)

所有的接口都经过网关,意味着:入参和出参都需要加密,是所有的参数而不是单个参数的加密; 2.一共是三个接口,接口之间都需要获取上个接口返回的数据的某个值再全部加密后,去请求;    接口大致是这样的:...,后者则相反;接下来我们来处于加密请求:首先是添加一个 sampler -http请求: ?...因为请求的内容都是加密后的,所以我们暂时不考虑请求参数,或者可以简单说一下,上面截图中Body Data里的 ${smsResponse}就是前置处理器的最终加密后参数值; 0x03: 因为文章开篇就说了...我此次选用“用户参数”是因为在请求参数都是加密后的,而加密前的参数必须要找个位置存放,所以就选择了它,废话不多,直接上图: ?...String response_data = prev.getResponseDataAsString();是用来获取服务器返回值的通用方法 ?

1.8K10

基础篇-Python发送get请求《如何放请求头、参数、获取返回内容》

一个完整的 get 请求,应该包括请求行(url)和请求头(headers)、请求参数(params)。...import requests # get请求:url+params请求参数 url="http://v.juhe.cn/laohuangli/d" # params 建议参数单独拿出来,这样写...先在 fiddler 中去掉请求头部,用这个接口发下请求试试,如果是正常返回 200 就可以不传头部,如果在工具中发送请求后,提示 403 - Forbidden: Access is denied,那么就需要传头部...请求头中那么多参数,哪些参数需要呢? 在工具中把请求头中的参数挨个删掉试试,不行的话就要加上了。 ? 这个是看开发怎么实现的了,自己写接口自动化代码的时候最好写上请求头,这样规范一些。...一般获取返回值内容,推荐用 content。

5.1K10

解决Spring Boot请求接口返回400错误的排查方法

在开发过程中,遇到接口返回400错误是比较常见的情况。这种错误通常表示请求参数有问题,但有时候却没有提供具体的错误信息,给排查带来了一定的困扰。...本篇文章将介绍一种解决方法,通过实际案例展示如何排查并解决Spring Boot请求接口返回400错误。概述 在实际案例中,编写了一个新增接口/sync用于同步商品档案信息。...在最初的代码实现中,请求参数使用了自定义的实体对象StyleBillsRequest作为方法参数,并使用@RequestBody注解来接收请求的JSON数据。...然而,当调用该接口时,始终返回400错误,没有提供任何具体的错误信息。初步排查 根据同事的指点,怀疑请求参数的JSON结构与实体对象的字段结构不匹配,导致无法正确转换。...通过逐个排查错误字段,我们可以找到并修复JSON结构与实体对象不匹配的问题。解决问题并优化 一旦找到了错误字段,我们应该及时修复代码,确保请求参数能够正确转换为实体对象。

1.9K10

Retrofit2.0 请求数据 一直出返回网络错误错误代码 414

今天 使用rettorfit 去请求数据一直不成功,请求逻辑上以及请求参数上都没有问题,后台也验证过是通的(我用xutils3请求也是成功的,后来意识到xutils3是将参数放在请求体里面),但是就是一直不能请求成功...,后来终于发现还是参数的问题。...由于使用的是retrofit POST 请求,查询字段用的是@QueryMap ,而这个查询时是直接拼接在url的后面,但是url的请求接口是有长度限制的,所以一直没有请求成功。...后来转用@FieldMap字段,这个字段是将查询参数放在请求体中,而请求体理论上是不存在长度限制的问题。 希望有遇到这个问题的朋友,可以及时解决,不要像我绕个大弯。

55510

iOS网络请求指南: 请求参数的拼接(签名)、返回参数解析(JSONXML解析)、案例(条码支付综合前置平台申请退款)

【提交和返回数据都为XML格式】 post请求body为XML的二进制数据的问题总结:不管是ASI 还是AFNetwork框架的使用方法,都是采用原生态的请求对象NSMutableURLRequest...即自己封装好NSMutableURLRequest 对象直接作为框架对应的API方法的参数 否则将请求失败,服务器端通常无法识别。...】请求参数按照ASCII码从小到大排序、拼接、加密(采用递归的方式进行实现) iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现) iOS...安全规范指南之【对请求参数进行签名】请求参数按照ASCII码从小到大排序、拼接、加密(采用递归的方式进行实现)应用案例:条码支付综合前置平台申请退款 ———————————————— 版权声明:本文为CSDN.../ 申请退款API】(接口类型:unified.trade.refund) iOS网络请求指南之 【条码支付综合前置平台被扫支付 / 申请退款API】(接口类型:unified.trade.refund

1.3K31

记录一次ajax 429请求laravel api错误

访问频率限制中间件throttle的使用 1、访问频率限制概述 频率限制经常用在API中,用于限制独立请求者对特定API请求频率。...例如,如果设置频率限制为每分钟1000次,如果一分钟内超过这个限制,那么服务器就会返回 429: Too Many Attempts.响应。...X-RateLimit-Limit告诉我们在指定时间内允许的最大请求次数, X-RateLimit-Remaining指的是在指定时间段内剩下的请求次数, Retry-After指的是距离下次重试请求需要等待的时间...原因如下: laravel框架api路由默认加载 throttle中间件,该中间件限制了一分钟内访问api的次数: 注释掉这行之后就取消了访问的限制 第一个参数 60 代表每分钟限制 60 次请求...第二个参数 1 代表触发了限制规则,则1分钟内禁止访问 或者将 60 调整成 10000 基本就可以保障访问的需求了。

1.9K10

API接口设计:防参数篡改+防二次请求

API接口由于需要供第三方服务调用,所以必须暴露到外网,并提供了具体请求地址和请求参数 为了防止被第别有用心之人获取到真实请求参数后再次发起请求获取信息,需要采取很多安全机制 1.首先: 需要采用https...在API接口中我们除了使用https协议进行通信外,还需要有自己的一套加解密机制,对请求参数进行保护,防止被篡改。...过程如下: 客户端使用约定好的秘钥对传输参数进行加密,得到签名值signature,并且将签名值也放入请求参数中,发送请求给服务端 服务端接收客户端的请求,然后使用约定好的秘钥对请求参数(除了signature...if (userInfo == null) { 47 ctx.setResponseBody(JSON.toJSONString(new Result("-1", "错误的...serverSign.equals(sign)) { 63 ctx.setResponseBody(JSON.toJSONString(new Result("-1", "错误的签名信息

12.3K32

Go错误集锦 | 函数何时使用带参数名的返回

其次,在return语句中可以不加任何参数,默认会将同名变量b的值返回。 02 何时使用带参数名的返回值 那么,在什么场景下会推荐使用带参数名的返回值呢?...在返回值中有两个float32类型的值,分别是经度和纬度。那么通过接口的签名你能知道返回值中哪个参数是经度,哪个参数是纬度吗?...因为通过error类型我们就知道返回值一定是一个错误类型的。所以,在这种场景下,返回值指定了参数名也不会提高可读性,就尽量不要指定参数值名称。...但同时,返回值的参数值在函数一开始会被初始化成对应类型的零值。在业务逻辑中如果处理不当,就会造成错误。...大家注意这里,如果ctx.Err()不等于nil,那么在返回err的时候,因为err没有被赋值,同时由于在返回值中指定了参数名被初始化成对应的零值nil,实际返回的err还是nil,不符合要返回具体错误的预期

2.6K10
领券