SpringBoot中自己写的接口中调用别人提供的接口

以请求折线图描点的数据接口为例,记录在自己写的接口中调用同事提供的接口的过程。

先看同事给的接口:

SpringBoot中自己写的接口中调用别人提供的接口_第1张图片


输入为:

customerNum    
beginDate   
endDate
type
sort


具体实现如下:

1、service里面写具体调用同事接口的实现方法

@Service
public interface MssmService {
  @Headers({"Content-Type: application/json","Accept: application/json"})
  @RequestLine("POST /mssm/v3/sr/api/msspChart")
  ReportList getReportListChart(@Param(value = "customerNum") String customerNum, @Param(value = "beginDate") String beginDate,@Param(value = "endDate") String endDate, @Param(value = "type") String type, @Param(value = "sort") String sort);
}

2、controller里面写调用service的方法

@RestController
public class MssmController implements MssmFacade {

    @Value(value = "${mssm.server.url}")
    private String mssmUrl;

    MssmService mssmServicee = Feign.builder()
            .encoder(new JacksonEncoder())
            .decoder(new JacksonDecoder())
            .options(new Request.Options(1000, 3500))
            .retryer(new Retryer.Default(5000, 5000, 3))
            .target(MssmService.class, "http://beta.isignet.cn:10010");

    @Override
public ReturnResult msspOverAll(RequestByOverAll requestByOverAll, BindingResult br) throws BindException {
    if(br.hasErrors()){
        throw new BindException(br);
    }else {
        cn.org.bjca.mssm.v3.sr.api.commons.web.ReturnResult reportList = mssmServicee.getReportListOverAll(requestByOverAll.getCustomerId()
                ,requestByOverAll.getBeginDate(),requestByOverAll.getEndDate(),requestByOverAll.getType());
        //return ReturnResult.success(reportList);
        if(reportList.getStatus()==200){
            return ReturnResult.success(reportList);
        }else{
            return new ReturnResult(-1,"失败");
        }

    }
}
}

3、facade里写把controller抽象出来的接口

@Api(value = "按", consumes = MediaType.APPLICATION_JSON_VALUE, protocols = "HTTP", description = "运管查询接口")
@RequestMapping("/mssm")
public interface MssmFacade {
@ApiOperation(value = "图表", produces = MediaType.APPLICATION_JSON_VALUE, httpMethod = "POST", notes = "图表")
@ApiImplicitParams(value = {
        @ApiImplicitParam(name = "requestByChart", value = "RequestByChart", required = true,paramType = "body",dataType = "RequestByChart")
})
@RequestMapping(value = "/msspChart", method = RequestMethod.POST)
@ResponseBody
public ReturnResult msspChart(@Valid @RequestBody RequestByChart requestByChart,BindingResult br) throws BindException;
}

4、最后swagger里实现只需requestBody填入json串即可




 
  

 
  


你可能感兴趣的:(JAVA)