Feign Client

In this guide we describe how to create a Feign Rest Client based on a Spring Boot Application.

Create Feign REST Client

hawkBit provides REST interfaces for Management API and DDI API. Using this interfaces you can create a feign client with the help of the feign inheritance support. Our example modules demonstrate how to create Feign client resources. Here you can find the Management API client resources and the DDI client resources. A small simulator application demonstrates how you can interact with the hawkBit via the Management API .

Example Management API simulator

In the follow code section, you can a see a feign client resource example. The interface extend the origin api interface to declare the @FeignClient. The @FeignClientdeclares that a REST client with that interface should be created.

@FeignClient(url = "${hawkbit.url:localhost:8080}/" + MgmtRestConstants.TARGET_V1_REQUEST_MAPPING)
public interface MgmtTargetClientResource extends MgmtTargetRestApi {
}

This interface can be autowired and use as a normal java interface:

public class CreateStartedRolloutExample {

    @Autowired
    private MgmtTargetClientResource targetResource;


    public void run() {
        // create ten targets
        targetResource.createTargets(new TargetBuilder().controllerId("00-FF-AA-0").name("00-FF-AA-0")
                .description("Targets used for rollout example").buildAsList(10));
    }

At hawkbit-example-core-feign-client is a spring configuration to auto configure some beans, which can be reused for a own feign client.

@Configuration
@ConditionalOnClass(Feign.class)
@Import(FeignClientsConfiguration.class)
public class FeignClientConfiguration {

    @Bean
    public ApplicationJsonRequestHeaderInterceptor jsonHeaderInterceptor() {
        return new ApplicationJsonRequestHeaderInterceptor();
    }

    @Bean
    public Contract feignContract() {
        return new IgnoreMultipleConsumersProducersSpringMvcContract();
    }
}