发表日期: 2021-04-26 09:26:56 浏览次数:117
如皋网站推广【如皋办理400电话】如皋SEO优化、如皋微信公众号APP客户端小程序开发、如皋网站托管、如皋APP开发
如皋市,简称“如”或“皋”,江苏省辖县级市,由南通市代管,江苏省历史文化名城。地处长江三角洲北翼,位于南通、泰州、苏州三市交界处,南与张家港市隔江相望,北与海安市、东与如东县连接、东南与南通市通州区毗邻,西与泰兴市、西南与靖江市接壤。全市总面积1477平方公里(不含长江水面),长江水面99平方千米。如皋长江岸线全长48千米,可直接利用长江深水岸线18.6千米。
如皋市被国际自然医学会评为世界六大长寿乡之一。 [1] 如皋市户籍人口约142万。截至2021年1月1日,全市80周岁以上高龄老人68031人,90周岁以上高龄老人10150人,百岁老人达525位,其中105岁以上达16位。 [2]
2019年6月17日,如皋被中华人民共和国住房和城乡建设部选取作为开展规范城市户外广告设施管理工作试点城市。 [3] 2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国绿色发展百强县市、2019年度全国新型城镇化质量百强县市、2019全国营商环境百强县。 [4-6] 2020年12月,社科院发布《全国县域经济综合竞争力100强》,如皋排名第31 [7] 。
返回状态码ret,用于表示接口响应的情况。参照自HTTP的状态码,ret主要分为三类:正常响应、非法请求、服务器错误。
表2-9 返回状态码的分类
分类 | ret范围 | 基数 | 说明 |
|---|---|---|---|
正常响应 | 200~299 | 200 | 表示接口服务正常响应 |
非法请求 | 400~499 | 400 | 表示客户端请求非法 |
服务器错误 | 500~599 | 500 | 表示服务器内容错误 |
正常响应时,通常返回ret = 200,并且同时返回data部分的业务数据,以便客户端能实现所需要的业务功能。
常见的2XX系列的状态码有:
200:正常响应,并实时返回结果
202:计划任务响应,所请求的服务已经被接受,并会有后台计划任务进行
非法请求是由客户端不正确调用引起的,如请求的接口服务不存在,或者接口参数提供错误,或者验证失败等等。当这种情况发生时,客户端开发人员需要按相应的错误提示进行调整,再重新尝试请求。
当需要返回4XX系列错误码时,可以在项目中抛出非法请求异常PhalApi_Exception_BadRequest。例如前面过滤器中进行签名验证失败后,会抛出以下异常:
throw new PhalApi_Exception_BadRequest('wrong sign', 1);复制代码PhalApi_Exception_BadRequest构造函数的第一个参数,是返回给客户端的错误提示信息,对应下面将讲到的msg字段。第二个参数是返回状态码的叠加值,也就是说最终的ret状态码都会在400的基数上加上这个叠加值,即:401 = 400 + 1。
常见的4XX系列的状态码有:
400:参数非法
401:验签失败,缺少登录态
403:权限不足
404:接口服务不存在或者非法
服务器内部错误是应该避免的,但当客户端发现有这种情况时,应该知会后台接口开发人员进行修正。这类错误是可控的,通常是由于开发人员开发不当而引起的,如当配置的参数规则不符合要求时,或者获取了不存在的参数等即会触发此类异常错误。通常由PhalApi框架抛出,项目一般不应抛出这类异常。
常见的5XX系统状态码有:
500:服务器内部错误
从上面,可以归结出状态码产生的时机。

图2-1 各状态码产生的时机
很多时候,很多业务场景,客户端在完成一个接口请求并获取到所需要的数据后,需要进行不同的处理的。就登录来说,当登录失败时,可能需要知道:
是否用户名不存在?
是否密码错误?
是否已被系统屏蔽?
是否密码错误次数超过了最大的重试次数?
...
显然,这里也应该返回一个操作状态码。更准切来说,是业务操作状态码。此类的状态依接口不同而不同,很难做到统一。我们建议的,在进行接口服务开发时,在业务数据data里面再统一添加一个状态码,例如使用code字段,完整路径即: data.code 。然后约定code = 0时表示操作成功,非0时为不同的失败场景。如上面的登录:
code = 0 登录成功
code = 1 用户名不存在
code = 2 密码错误
code = 3 系统已屏蔽此账号
code = 4 密码错误次数超过了最大的重试次数
...
这样,客户端在获取到接口返回的数据后,先统一判断ret是否正常响应并正常返回结果,即ret = 200;若是,则再各自判断操作状态码code是否为0,若不为0,则提示相应的文案并进行相应的引导,若为0,则走正常流程!
总而言之,最外层的ret状态码是针对技术开人员的,是用于开发阶段的。而data中的操作状态码,如code,是面向最终用户的,是用于产品阶段的。
当接口不是正常响应,即ret不在2XX系列内时,msg字段会返回相应的错误提示信息。即当有异常(如上面所说的客户端非法请求和服务端运行错误两大类)触发时,会自动将异常的错误信息作为错误信息msg返回。
但对于服务端的异常,出于对接口隐私的保护,框架在错误信息时没有过于具体地描述;相反,对于客户端的异常,由会进行必要的说明,以提醒客户端该如何进行调用调整。
此外,我们根据需要可以考虑是否需要进行国际化的翻译。如果项目在可预见的范围内需要部署到国外时,提前做好翻译的准备是很有帮助的。例如前面的签名失败时,可以将异常错误信息进行翻译后再返回。
throw new PhalApi_Exception_BadRequest(T('wrong sign'), 1);复制代码当使用的是HTTP/HTTPS协议时,并且需要设置头部header时,可以使用PhalApi_Response::addHeaders()进行设置。对于JSON格式的返回默认设置的头部有:Content-Type:"application/json;charset=utf-8"。

如皋网站推广【如皋办理400电话】如皋SEO优化、如皋微信公众号APP客户端小程序开发、如皋网站托管、如皋APP开发