接口返回值规则

技术团队工作中,接口的规则相当重要。接口可分为两部分,入参和返回值。下面就简单阐述我的相关思考:

返回结果,使用json表示:
{“code”:0,”thirdCode”:”“,”msg”:”[font=宋体]操作成功[/font]”, “data”:{“fUid”:2,”fToken”:”31ba90af-5468-4d87-9b6eeaa001112ab1f”,”fTokenExptime”:1431059268000}}
说明如下:code:整型,错误代码,如果本次操作成功为0,10000以内表示返回值合理;10000-19999为系统自定义错误;20000-29999为第三方错误;
thirdCode:字符串,表示第三方库返回的结果编码,默认为空字符串
msg:字符串,msg是本次操作的简单说明,“errorCode=0”时为操作成功,其他则反映对应errorCode表示的信息
data:具体返回的数据

code枚举值如下:
空数据:1
未知错误 10001;
校验错误 10002;
权限错误 10003;
参数错误 10004;
XX支付平台:21001;
XX短信平台:22001。

举例说明:某人刚注册一个网站,接下来登录成功:{“code”:0,”thirdCode”:null,”msg”:”登录成功”, “data”:{“fUid”:2,”fToken”:”31ba90af-5468-4d87-9b6e-aa001112ab1f”,”fTokenExptim

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个使用RestTemplate限流调用第三方HTTP接口获取接口返回值,并利用MyBatis-Plus将接口响应报文写入MySQL数据库的示例代码: 首先,需要在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.23</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId> </dependency> ``` 接着,在application.properties文件中添加以下配置: ```properties # 配置第三方API的URL api.url=http://example.com/api # 配置限流规则 resilience4j.circuitbreaker.instances.default.slidingWindowSize=10 resilience4j.circuitbreaker.instances.default.minimumNumberOfCalls=5 resilience4j.circuitbreaker.instances.default.failureRateThreshold=50 resilience4j.circuitbreaker.instances.default.waitDurationInOpenState=5000 resilience4j.circuitbreaker.instances.default.slowCallRateThreshold=100 resilience4j.circuitbreaker.instances.default.slowCallDurationThreshold=1000 # 配置数据库连接 spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 配置MyBatis-Plus mybatis-plus.mapper-locations=classpath*:mapper/**/*.xml mybatis-plus.type-aliases-package=com.example.demo.entity ``` 然后,创建一个名为ApiService的类,用于调用第三方API: ```java @Service public class ApiService { @Autowired private RestTemplate restTemplate; @Value("${api.url}") private String apiUrl; @Retry(name = "apiServiceRetry", fallbackMethod = "fallback") @CircuitBreaker(name = "apiServiceCircuitBreaker", fallbackMethod = "fallback") public String callApi() { ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class); return response.getBody(); } public String fallback(Throwable t) { return "fallback"; } } ``` 在上面的代码中,我们使用了Resilience4j框架提供的注解@Retry和@CircuitBreaker来实现重试和熔断功能。如果第三方API调用失败,会自动重试一定次数(默认为3次),如果重试仍然失败,则进入熔断状态。在熔断状态下,调用fallback方法返回一个默认值。 接下来,创建一个名为ApiResponse的实体类,用于封装接口响应报文: ```java @Data public class ApiResponse { private String response; } ``` 然后,创建一个名为ApiDao的Mapper接口,用于定义数据访问方法: ```java @Mapper public interface ApiDao extends BaseMapper<ApiResponse> { } ``` 接着,创建一个名为ApiService的Service类,用于调用第三方API并将响应报文写入数据库: ```java @Service public class ApiService { @Autowired private RestTemplate restTemplate; @Autowired private ApiDao apiDao; @Value("${api.url}") private String apiUrl; @Retry(name = "apiServiceRetry", fallbackMethod = "fallback") @CircuitBreaker(name = "apiServiceCircuitBreaker", fallbackMethod = "fallback") public String callApi() { ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class); ApiResponse apiResponse = new ApiResponse(); apiResponse.setResponse(response.getBody()); apiDao.insert(apiResponse); return response.getBody(); } public String fallback(Throwable t) { return "fallback"; } } ``` 在上面的代码中,我们使用了MyBatis-Plus提供的BaseMapper接口进行数据库操作,调用insert方法将ApiResponse对象写入数据库。 最后,在Controller中使用ApiService类进行调用: ```java @RestController public class ApiController { @Autowired private ApiService apiService; @GetMapping("/api") public String api() { return apiService.callApi(); } } ``` 这样,我们就完成了一个使用RestTemplate限流调用第三方HTTP接口获取接口返回值,并利用MyBatis-Plus将接口响应报文写入MySQL数据库的SpringBoot项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值