Industrialisation des contrats d’interface
Centraliser les contrats avec Netflix/Feign
Quoi ? Netflix c’est fait pour se d...
Sommaire
❖ Vous avez dit “centraliser” ?
➢
➢
❖ Utilisation de Feign
➢
➢
➢
➢
➢
❖ Stratégie de migration des appels RestTemp...
Vous avez dit centraliser ?
Analyse d’impact simplifiée
❖
❖
❖
Vous avez dit centraliser ?
Simplification de la gestion des dépendances / micros-jars
Vous avez dit centraliser ?
Simplification de la gestion des dépendances / micros-jars
Utilisation de Feign
Pourquoi Feign ?
❖
❖
❖
❖
Utilisation de Feign
Créer un contrat d’interface
// Version Jax-rs
@Path(“/v1/users”)
public interface UserService {
@GET...
Utilisation de Feign
Créer un client
public class UserClient extends AbstractClient implements UserService {
public UserCl...
Utilisation de Feign
Instanciation d’un client dans Spring et utilisation
// Instanciation
@Bean(name = "userServiceClient...
Stratégie de migration des appels RestTemplate vers Feign
❖
❖
❖
❖
❖
❖
❖
❖
❖
❖
❖
Questions
Prochain SlideShare
Chargement dans…5
×

Industrialisation des contrats d'interface avec netflix feign

239 vues

Publié le

Industrialisation des contrats d'interface avec netflix feign (Java, Rest, JaxRs)

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
239
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Industrialisation des contrats d'interface avec netflix feign

  1. 1. Industrialisation des contrats d’interface Centraliser les contrats avec Netflix/Feign Quoi ? Netflix c’est fait pour se détendre devant une série non ? Par Idriss Neumann, le 09/05/2016
  2. 2. Sommaire ❖ Vous avez dit “centraliser” ? ➢ ➢ ❖ Utilisation de Feign ➢ ➢ ➢ ➢ ➢ ❖ Stratégie de migration des appels RestTemplate vers Feign ❖ Conclusion / Questions
  3. 3. Vous avez dit centraliser ? Analyse d’impact simplifiée ❖ ❖ ❖
  4. 4. Vous avez dit centraliser ? Simplification de la gestion des dépendances / micros-jars
  5. 5. Vous avez dit centraliser ? Simplification de la gestion des dépendances / micros-jars
  6. 6. Utilisation de Feign Pourquoi Feign ? ❖ ❖ ❖ ❖
  7. 7. Utilisation de Feign Créer un contrat d’interface // Version Jax-rs @Path(“/v1/users”) public interface UserService { @GET @Path(“/{id}”) User getById(@PathParam("id") String id); @POST @Path(“/”) User create(User user); @PUT @Path(“/{id}”) void update(@PathParam(“id”), User user); @DELETE @Path(“/{id}”) void delete(@PathParam(“id”)); } // Version Feign public interface UserService { @RequestLine(“GET /v1/users/{id}”) @Headers("accept: text/xml") User getById(@Param("id") String id); @RequestLine(“GET {href}”) @Headers("accept: text/xml") User getByHref(@Param("href") String href); @RequestLine(“GET /v1/users/?email={email}”) User getByEmail(@Param("email") String email); @RequestLine(“DELETE /v1/users/{id}”) @Headers("Authorization: Bearer {accessToken}") void delete(Param(“accessToken”) String accessToken); }
  8. 8. Utilisation de Feign Créer un client public class UserClient extends AbstractClient implements UserService { public UserClient(String url, RequestInterceptor interceptor) { super(url, interceptor); // Supposons que l’object mapper Jackson est héritée d’une abstract feignClient = Feign.builder() .client(buildHttpClient()) .requestInterceptor(interceptor) .encoder(new JacksonEncoder(OBJECT_MAPPER)) .decoder(new JacksonDecoder(OBJECT_MAPPER)) .target(UserService.class, url); // Pour du Jax-rs ajouter .contract(new JAXRSContract()) } // Implémenter les méthodes et déleguer }
  9. 9. Utilisation de Feign Instanciation d’un client dans Spring et utilisation // Instanciation @Bean(name = "userServiceClient") public UserService userService(@Value("${endpoint.url}") String endpoint) { return new UserClient(endpoint, (RequestInterceptor) requestTemplate -> { requestTemplate.header(“header_key”, “header_value”); }); } // Utilisation @Autowired private UserService userService; // ... userService.getById(id);
  10. 10. Stratégie de migration des appels RestTemplate vers Feign ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖ ❖
  11. 11. Questions

×