Maven based Spring boot 2 API which has been built using:
- Reactive Feign Client
- Ehcache
- Lombok
- Resilience4j-Retry: Used it to retry country API calls.
- Reactor
- Reactor Extra utils: Spring built-in caching
@Cacheable & ... other annotationsdoes not support caching ofMono&Fluxso used this functional lib to cache Feign call results - Spring Security & OAuth: to implement the 2 bonuses
- Swagger using springdoc-openapi-ui
To run the program:
- value of
google.client-idinapplication.propertieshas to be changed based on the value you get from Google APIs Console google.client.secretenv variable has to be passed to the java applicationrapid.api.keyenv variable has to be passed too, this is the key you get after registering in rapidAPI
Secrets google.client.secret & rapid.api.key should be stored in secure place and for simple application an env variable could be a good fit, but for production applications it would be better to store them in secrets manager like Hashicorp Vault