Spring Coud Feignの使い方

1755 ワード

Spring Coudと結合してFeignを使用するステップは以下の通りである.
FeignがSpring Cloudと結合した場合、Sprigmvcで提供される注釈サポートを使用できます. @Get Mapping等
1.Feignサポートをオープンする @EnbaleFeign Clients
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}
2.Feignインターフェースを定義する
Get要求方式:
Get要求を定義する二つの方法を示します.mvcのように@Request Paramを省略してはいけないので、属性名を定義しなければならないことに注意してください.
@FeignClient(Constants.SERVICE_NAME)
public interface ApiClient {

	public static final String URL = "/api/user";

	@GetMapping(URL + "/get")
	User get(@RequestParam("uid") String uid);

	@GetMapping(URL + "/get/{uid}")
	User show(@PathVariable("uid") String uid);

}
また、Mapでパラメータを構築することもできます.
public User get(@RequestParam Map map);
Post要求方式:
@PostMapping(URL + "/update")
User update(@RequestBody User user);
サービス:
@RestController
public class UserApi {

    @PostMapping("/update")
    public User update(@RequestBody User user) {
      ...
    }
}
いくつかのピット:
1.@Request Mappingはインターフェースに注解しないでください.でないと、controllerとして暴露されます.
2.Get要求を使用する場合、パラメータは基本データオブジェクトのみとなり、String、Integer、Map(Userなどの複雑なオブジェクトが入ってくると、Get要求はPost要求に変わります)
3.パラメータは必ず使用してください @Request Paramまたは @PathVarableは注釈を行い、属性名を定義します.さもなければエラーを報告します. no suitable Http Message Coverter found for reponse type[type]and content type[text/plin;charset=UTF-8]
4.Feignで使用する @Request Paramの役割は、要求urlにパラメータを付加することです.uid=1なので、パラメータ名はサービスインターフェースのパラメータと一致していなければなりません.
Feignプロジェクト文書
https://github.com/OpenFeign/feign