Bael 5296: Added Http Request Header using the Feign Client (#12201)

* Implemented cassandra batch query

* Added netty version param

* Reformatted correctly

* Reformatted correctly

* Reformatted correctly

* Formatting fix resolved

* Formatting fix resolved

* Removed unused method

* Refactored method for better readability

* tab spaces corrected

* Added http headers in feign

* Updated code

* Updated code

* Removed unused code

* Removed unused logger code

* Implemented Interceptor and logging related code review

* Added AuthService Code

* Removed toString method

* Removed unnecessary declaration

* Removed new line

* Added feign headers log as well

* Moved to Authorisation package for better naming

* spaces removed

* @Override included

Co-authored-by: saikat chakraborty <saikat.chakraborty@tesco.com>
This commit is contained in:
Saikat Chakraborty
2022-05-27 13:58:56 +05:30
committed by GitHub
parent 4abe624ea6
commit 4b36bbf0b7
12 changed files with 293 additions and 1 deletions
@@ -0,0 +1,34 @@
package com.baeldung.feign.clients.builder;
import com.baeldung.feign.header.authorisation.ApiAuthorisationService;
import com.baeldung.feign.header.interceptor.AuthRequestInterceptor;
import feign.Feign;
import feign.Logger;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;
import feign.slf4j.Slf4jLogger;
public class BookFeignClientBuilder {
public static <T> T createClient(Class<T> type, String uri) {
return Feign.builder()
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.logger(new Slf4jLogger(type))
.logLevel(Logger.Level.HEADERS)
.target(type, uri);
}
public static <T> T createClientWithInterceptor(Class<T> type, String uri) {
return Feign.builder()
.requestInterceptor(new AuthRequestInterceptor(new ApiAuthorisationService()))
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.logger(new Slf4jLogger(type))
.logLevel(Logger.Level.HEADERS)
.target(type, uri);
}
}
@@ -0,0 +1,17 @@
package com.baeldung.feign.clients.header.dynamicheader;
import com.baeldung.feign.models.Book;
import feign.HeaderMap;
import feign.Headers;
import feign.RequestLine;
import java.util.Map;
@Headers("Content-Type: application/json")
public interface BookClient {
@RequestLine("POST")
void create(@HeaderMap Map<String, Object> headers, Book book);
}
@@ -0,0 +1,18 @@
package com.baeldung.feign.clients.header.staticheader;
import com.baeldung.feign.models.Book;
import com.baeldung.feign.models.BookResource;
import feign.Headers;
import feign.Param;
import feign.RequestLine;
@Headers("Accept-Language: en-US")
public interface BookClient {
@RequestLine("GET /{isbn}")
BookResource findByIsbn(@Param("isbn") String isbn);
@RequestLine("POST")
@Headers("Content-Type: application/json")
void create(Book book);
}
@@ -0,0 +1,16 @@
package com.baeldung.feign.clients.header.staticheader.parameterized;
import com.baeldung.feign.models.BookResource;
import feign.Headers;
import feign.Param;
import feign.RequestLine;
@Headers("x-requester-id: {requester}")
public interface BookClient {
@RequestLine("GET /{isbn}")
BookResource findByIsbn(@Param("requester") String requestorId, @Param("isbn") String isbn);
}
@@ -0,0 +1,11 @@
package com.baeldung.feign.header.authorisation;
import java.util.UUID;
public class ApiAuthorisationService implements AuthorisationService {
@Override
public String getAuthToken() {
return "Bearer " + UUID.randomUUID();
}
}
@@ -0,0 +1,7 @@
package com.baeldung.feign.header.authorisation;
public interface AuthorisationService {
String getAuthToken();
}
@@ -0,0 +1,22 @@
package com.baeldung.feign.header.interceptor;
import com.baeldung.feign.header.authorisation.AuthorisationService;
import feign.RequestInterceptor;
import feign.RequestTemplate;
public class AuthRequestInterceptor implements RequestInterceptor {
private AuthorisationService authTokenService;
public AuthRequestInterceptor(AuthorisationService authTokenService) {
this.authTokenService = authTokenService;
}
@Override
public void apply(RequestTemplate template) {
template.header("Authorisation", authTokenService.getAuthToken());
}
}
+2 -1
View File
@@ -5,9 +5,10 @@
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
<logger name="feign.Logger" level="DEBUG" />
</appender>
<root level="INFO">
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>