一添加依赖
<!--服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
二在需要调用的模块中加入被调用模块的接口
package com.atguigu.eduservice.client; import com.atguigu.commonutils.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; @Component @FeignClient(name = "service-vod",fallback = VodFileDegradeFeignClient.class) public interface VodeClient { @DeleteMapping("/eduvod/video/removeAlyVideo/{id}") //加上其完全路径 public R removeAlyVideo(@PathVariable("id") String id); //@PathVariable注解一定要加上参数名称“id",否则报错 }
三注入接口,进行方法调用
@RestController @RequestMapping("/eduservice/video") @CrossOrigin public class EduVideoController { @Autowired private EduVideoService videoService; @Autowired private VodeClient vodeClient; //添加小节 @PostMapping("addVideo") public R addVideo(@RequestBody EduVideo eduVideo) { videoService.save(eduVideo); return R.ok(); } //删除小节 // TODO 后面这个方法需要完善:删除小节时候,同时把里面视频删除 @DeleteMapping("{id}") public R deleteVideo(@PathVariable String id) {//根据小结id找到视频id EduVideo eduVideo = videoService.getById(id); String videoSourceId = eduVideo.getVideoSourceId(); if (!StringUtils.isEmpty(videoSourceId)){ R result = vodeClient.removeAlyVideo(videoSourceId);//删除视频 if (result.getCode() == 20001){ throw new GuliException(20001,"删除视频失败,荣斗气。。。。。。。"); } } videoService.removeById(id);//删除小结 return R.ok(); } //修改小节 TODO }