API项目扩展之SDK统一响应

因为访问接口是通过自定义的客户端api-client-sdk进行的,在api-client-sdk中设置统一的响应体Response

java
复制代码
@Data public class Response { private int status; private String message; }

修改自定义的方法中的返回类型,即相关调用

java
复制代码
public Response getNameByJson(User user) throws UnsupportedEncodingException { String json = JSONUtil.toJsonStr(user); HttpResponse httpResponse = HttpRequest.post(GATEWAY_HOST + "/api/name/json") .addHeaders(getHeadersMap(json)) .body(json) .execute(); int status = httpResponse.getStatus(); String body = httpResponse.body(); System.out.println("请求状态为:" + status); System.out.println("请求体为:" + body); Response response = new Response(); response.setStatus(status); response.setMessage(body); return response; }
java
复制代码
/** * 测试接口 * * @param interfaceInfoTextRequest * @param request * @return */ @PostMapping("/TextInterface") @Operation(summary = "测试接口", description = "根据ID测试接口") public BaseResponse<Object> TextInterfaceInfo( @Parameter(description = "根据id请求") @RequestBody InterfaceInfoTextRequest interfaceInfoTextRequest, @Parameter(hidden = true) HttpServletRequest request) { // 其余代码省略.... try { Response Response = textApiClient.getNameByJson(user); // 这里可以根据响应体中的状态码,判断调用是否成功 if (Response.getStatus() != 200){ throw new BusinessException(ErrorCode.REQUEST_ERROR); } return ResultUtils.success(Response.getMessage()); } catch (Exception e) { throw new RuntimeException(e); } }

这里可以不添加try..catch,直接抛出自定义异常,也会被全局异常处理器捕获

我第一次自己思考着做项目,不知道有没有更好的办法,有的话可以分享一下

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP