SpringCloud分佈式項目中使用Feign發送請求注意事項

場景:

通常會通過控制層(Controller)給業務層(Service)發送數據,而在分佈式項目中,服務調用者一個項目,服務提供者也是一個項目,則會在調用者中通過Feign發送請求給服務,如下:

@FeignClient(value = "service-demo", fallback = TbItemServiceHystrix.class)
public interface TbItemService {
    /**
     * 遠程調用service-demo服務裏save方法
     * @param tbItem 封裝了插入信息1的對象
     * @param desc 保存插入信息2的字符串對象
     * @return 結果記錄的id
     */
    @RequestMapping("/item/save")
    Long saveTbItem(@RequestBody TbItem tbItem, @RequestParam("desc") String desc);
}

服務提供者

//服務提供者的某控制器中
@RestController
public class ItemController {
	@Autowired
	private IItemService itemService;
	
	@PostMapping(value="/item/save")
	public Long save(@RequestBody TbItem item, String desc) {
		try {	
			Long itemId = itemService.saveItem(item, desc);
			return itemId;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}	
}

注意:上面使用@RequestBody註解,該註解以json格式接收數據,並且把數據封裝到TbItem對象中。另外,由於使用Feign發送Get請求時候無法傳遞對象類型參數,因爲它會自動轉換成post請求方式,因此服務提供者需要使用Post方式接收參數。爲了能夠接收item參數,服務提供者不能使用@GetMapping,而要使用@PostMapping註解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章