API错误返回规范有哪些

技术API错误返回规范有哪些本篇内容介绍了“API错误返回规范有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!禁止通

本文介绍了关于“什么是API错误返回规范?”很多人在实际案例的操作中会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

禁止通过抛异常形式返回API业务错误

API禁止抛出Checked异常,即禁止通过抛出异常来返回业务处理中的参数错误、逻辑错误和业务错误,用Response #代码、message来表达业务错误。

注意:不要强迫调用者到处写try{}catch()。

示例:

1响应设置保存位置(.);反例:

1 TsaveDesposit(.)throwsServiceException,IllegalArgumentException,ValidationException

禁止通过抛异常形式返回API业务错误

API禁止抛出Checked异常,即禁止通过抛出异常来返回业务处理中的参数错误、逻辑错误和业务错误,用Response #代码、message来表达业务错误。

注意:不要强迫调用者到处写try{}catch()。

示例:

1响应设置保存位置(.);反例:

1 TsaveDesposit(.)throwsServiceException,IllegalArgumentException,ValidationException00-1010正面例子:

一个

2

10

11 public void savexxx(){ 0

ResponseTresult=xxxWriteService(.)

if(!result . issueccess()){ 0

If (XXX utils。ISBANKUN SUPPORT(结果。getcode(){ API provider提供了一个工具类来分析代码含义,代码含义可以在调用者不知情的情况下不断迭代更新。

//银行渠道未开通,需要特别提示。

.

}else{

.

}

}

}反

例:

1
2
3
4
5
6
7
8
9
10
11
public void saveXXX(){
    Response<T> result = xxxWriteService(...)
    if (!result.isSuccess()){
        if ("10101".equals(result.getCode)){   <<<调用方按API提供方的错误码值做硬编码,代码耦合。
            //银行渠道未开通,需要特殊提示
            ...
        }else{
            ...
        }
    }
}

【推荐】API返回可直接显示给用户的中文提示信息

API失败时,只有API实现方最清楚是什么原因,该怎么提示。那么,请提供对应的提示信息。

我们系统中存在一些用国际化风格的error message,而当前的国际化实现方式真如你想的那么好用吗?

error message国际化原理:
  • 代码中的提示信息国际化配置文件

API错误返回规范有哪些

  • 国际化提示原理

image-20180930162340975

1) 提示信息国际化的行为发生在Web层,Web层启动时会加载Web层的resources/messages提示信息文件

2)当REST API需要返回提示信息时,Web会根据HTTP 请求中的Locale值(例如:zh_CN、zh_TW、en_US、es_ES_Traditional_WIN等)来决定返回哪一种语言的提示信息。将errorMessage以此种语言方式返回给浏览器进行提示。

问题:

1)在分布式系统中,各个应用按领域自治,其resources/messages只维护了自身业务需要的errorMessage。

2)当图中C Service 将errorMessage = template.status.not.match 返回给 XX Service,XX Service直接透传给XX Web的情况下,XX Web的resources/messages是不包括template.status.not.match的,所以此errorMessage将无法正确的展示其本应该提示的信息。

所以,推荐API返回可直接显示给用户的中文提示信息。

  • 正例:

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {
    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板配置正在审核中,请在审核完成后再更新");
    }catch(Exception e){
        ...
    }
}
  • 反例:

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {
    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板管理状态机异常");
    }catch(Exception e){
        ...
    }
}

【推荐】返回具备可读性,引导性的错误提示信息

  • 正例:

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {
    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板配置正在审核中,请在审核完成后再更新");
    }catch(Exception e){
        ...
    }
}
  • 反例:

例1

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {
    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板管理状态机异常");  <<<< 你作为用户,是不是吓一跳?
    }catch(Exception e){
        ...
    }
}

例2

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {
    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail(e.getMessage());    <<<< message谁都看不懂,没有任何意义
    }catch(Exception e){
        ...
    }
}

“API错误返回规范有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/97033.html

(0)

相关推荐

  • 费洛蒙香水官方网站,淘宝卖的费洛蒙香水真的有用吗

    技术费洛蒙香水官方网站,淘宝卖的费洛蒙香水真的有用吗关注【糖小姐的闺蜜圈】闺蜜美费洛蒙香水官方网站,世界才美不!你会比闺蜜更美!文末有惊喜!谢邀!
    其实,所谓的费洛蒙是人体分泌的一种信息素。也有人称为恋爱信息素,从生理学

    生活 2021年11月1日
  • python循环语句(python循环语句的运用)

    技术Python循环语句怎么用小编给大家分享一下Python循环语句怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是循环呢?简单理解

    攻略 2021年12月19日
  • c#如何实现DataGridView分页

    技术c#如何实现DataGridView分页这篇文章主要介绍了c#如何实现DataGridView分页,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。由于项

    攻略 2021年11月23日
  • 内衣码数对照表,胸罩分为哪几个等级,哪个最大

    技术内衣码数对照表,胸罩分为哪几个等级,哪个最大1.罩杯尺寸罩杯尺寸=胸围-下胸围(例如内衣码数对照表:10cm=A罩杯.13cm=B罩杯.15cm=C罩杯18cm=D罩杯.20cm=E罩杯)
    胸罩罩杯尺寸说明表
    罩杯型

    生活 2021年10月24日
  • sparksql查询优化的基本流程(spark调优参数)

    技术spark作业调优的方法是什么这篇文章主要讲解了“spark作业调优的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“spark作业调优的方法是什么”吧!调优

    2021年12月14日
  • 一个方法或变量是private属性的访问范围是什么

    技术一个方法或变量是private属性的访问范围是什么本篇文章给大家分享的是有关一个方法或变量是private属性的访问范围是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟

    攻略 2021年11月9日