美文网首页
(转)对外接口设计规范

(转)对外接口设计规范

作者: 一只狗被牵着走 | 来源:发表于2019-08-13 10:50 被阅读0次

1、接口禁止方法重载,重载会在做服务SLA控制,日志监控等方面带来不便

2、接口注释必须清晰地表达如何使用,接口是同步还是异步,服务内容,参数校验规则(精度、长度、取值范围等),返回值信息,异常情况;使用场景有要求的需要重点这几个方面描述

a)不同使用场景,在注释中区分描述

b)特定使用场景下的业务规则描述

c)特定使用场景下的注意事项描述

格式上参照注释规范{*}

3、接口返回值中属性禁止使用枚举,如果返回值属性是枚举类型,会为后期升级埋下隐患(由于枚举序列化的特性导致

删除枚举值和增加枚举值都可能导致客户端反序列化失败),建议提供String类型,取值范围可以通过枚举来告诉客户端

禁止声明方式

/** 强制还款标志 */
private EnforceFlagEnum   enforceFlag;

/** 手工调级标志 */
private AdjRiskFlagEnum   adjustRiskFlag;

建议声明方式

/** 强制还款标志,取值范围见{@link EnforceFlagEnum}*/

private String enforceFlag;

/** 手工调级标志,取值范围见{@link AdjRiskFlagEnum}*/
private String   adjustRiskFlag;

4、接口参数涉及取值范围选择的(比如交易码,渠道类型,身份标识),需提供对应的常量给客户端使用,谨慎使用枚举做入参

唯一性控制属性:a)如接口请求参数包含业务唯一性控制字段,需要对相关字段以及唯一性控制方式进行特别说明

b)若在唯一性控制基础之上,涉及相关业务幂等控制处理,需要进行相关详细描述

5、接口方法确保不对外抛出异常,异常情况需要通过错误码通知客户端,处理失败也需要有返回值,返回值实现可参考EcBaseResult及其子类实现

POM依赖

<dependency>
  <groupId>com.test.eccommon</groupId>
  <artifactId>eccommon-rpc</artifactId>
  <version>请用最新版本号</version>
</dependency>

9、接口返回值中的方法尽量只提供基本属性的get set方法,不要提供有业务规则含义的方法(因为业务逻辑的变化会要求客户端升级jar包版本)

10、操作类的接口务必考虑幂等性控制,因为网络重发,客户端异常等都可能会引起重复调用,严重的可能会引起资损

根据业务约定的部分唯一性字段,对多次请求的数据判断是否重复提交的判断依据,比如通过外部订单号outOrderNo做唯一性控制,在唯一性控制的基础上,对请求中的其他字段进行判断,

如果全部业务数据(或关键业务数据)和已经落库的数据一致,则请求一次和请求多次都不会对业务处理产生影响,返回结果不变,

如果outOrderNo关联的其他信息与系统已经持久化的数据不一致则提示XXX参数与原先的数据不一致。

11、接口命名统一以Facade结尾,个别的SPI接口可以使用别的结尾词以便更好地表达SPI的要求,SOFA框架系统对外接口统一存放在xxx-common-service-facade

这个bundle下

12、接口必须提供有效的监控日志,配置监控报警规则监控日志输出见日志规范

13、敏感信息:接口返回对象属性字段包含敏感信息,需要做好标识,进行相关提示避免客户端打印到日志中去

金额:接口返回对象属性涉及到金额,需要描述金额的单位以及对应的币种 统一使用支付宝金额类com.iwallet.biz.common.util.money.Money

Money所在jar坐标

<dependency>
  <groupId>com.test.common</groupId>
  <artifactId>test-common-lang</artifactId>
  <version>2.0.9</version>
</dependency>

相关文章

  • (转)对外接口设计规范

    1、接口禁止方法重载,重载会在做服务SLA控制,日志监控等方面带来不便 2、接口注释必须清晰地表达如何使用,接口是...

  • RESTful API 最佳实践

    【转】RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。 它的大原则容易把握,但是细...

  • restfulAPI规范

    什么是restfulAPI 满足rest 设计规范的Api接口。 restfulAPI 的设计规范是怎么样的? 1...

  • 记一次线上bug:请求入参没有trim()导致查询失败

    现象:对外提供的api接口,但是某一天查询接口突然出现了异常。原因:查询到库里面的数据存在空格,而代码中有将数据转...

  • REST接口设计规范

    REST接口设计规范 URI格式规范 URI(Uniform Resource Identifiers) 统一资源...

  • Java学习笔记——接口

    接口概述: 狭义角度,指java中的interface广义角度,对外提供规则的都是接口接口就是提供对外访问的规则 ...

  • 接口工具对比(apipost、jmeter、postman、sw

    一、接口都有哪些类型? 接口一般分为两种:1.程序内部的接口 2.系统对外的接口 系统对外的接口:比如你要从别的网...

  • 接口设计评审规范

    接口设计评审规范 前言 本接口设计规范,参考了restfull的部分设计理念。 以资源为中心的接口设计 资源是 R...

  • 接口测试

    首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从...

  • 接口测试及常用接口测试工具

    首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从...

网友评论

      本文标题:(转)对外接口设计规范

      本文链接:https://www.haomeiwen.com/subject/ldkvjctx.html