1. 程式人生 > 其它 >穀粒商城學習——P90 呼叫遠端服務

穀粒商城學習——P90 呼叫遠端服務

穀粒商城學習——P20-27springcloud alibaba課程中已經學過openfeign呼叫遠端服務的基本示例,重複的不在贅述

被呼叫的遠端controller介面指定了@PostMapping和@RequestBody,則呼叫的時候也需要指定這兩個註解以保證簽名一致

關鍵程式碼:

SpuBoundsController:介面提供方
@RestController
@RequestMapping("coupon/spubounds")
public class SpuBoundsController {
    @Resource
    private SpuBoundsService spuBoundsService;
    @PostMapping(
"/save") public R save(@RequestBody SpuBoundsEntity spuBounds){ spuBoundsService.save(spuBounds); return R.ok(); } }
View Code

CouponFeignService:呼叫方的介面,指定遠端呼叫資訊
@FeignClient("gulimall-coupon")
public interface CouponFeignService {

    /**
     * 1、CouponFeignService.saveSpuBounds(spuBoundTo);
     *      1)、@RequestBody將這個物件轉為json。
     *      2)、找到gulimall-coupon服務,給/coupon/spubounds/save傳送請求。
     *          將上一步轉的json放在請求體位置,傳送請求;
     *      3)、對方服務收到請求。請求體裡有json資料。
     *          (@RequestBody SpuBoundsEntity spuBounds);將請求體的json轉為SpuBoundsEntity;
     * 只要json資料模型是相容的。雙方服務無需使用同一個to
     
*/ @PostMapping("/coupon/spubounds/save") R saveSpuBounds(@RequestBody SpuBoundTo spuBoundTo); }
View Code

SpuInfoServiceImpl:呼叫具體實現
    @Resource
    private CouponFeignService couponFeignService;

    @Override
    public void savesupInfo(SpuSaveVo vo) {
        SpuBoundTo spuBoundTo = new
SpuBoundTo(); R r = couponFeignService.saveSpuBounds(spuBoundTo); }
View Code