Double the URL when using Feign with Spring boot
I am little new to Spring boot and I am using Feign Rest client to talk to my web service. But I'm getting my URL double and cannot invoke the intended service.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@GetMapping
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String from,
@PathVariable("to") String to);
}
status 404 reading
ExchangeServiceProxy#retrieveExchangeValue(String,String); content:
{"timestamp":"2018-11-22T05:50:45.822+0000","status":404,"error":"Not
Found","message":"No message
available","path":"/exchange/from/USD/to/XYZ/exchange/from/USD/to/XYZ"}
spring-boot spring-cloud-feign
add a comment |
I am little new to Spring boot and I am using Feign Rest client to talk to my web service. But I'm getting my URL double and cannot invoke the intended service.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@GetMapping
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String from,
@PathVariable("to") String to);
}
status 404 reading
ExchangeServiceProxy#retrieveExchangeValue(String,String); content:
{"timestamp":"2018-11-22T05:50:45.822+0000","status":404,"error":"Not
Found","message":"No message
available","path":"/exchange/from/USD/to/XYZ/exchange/from/USD/to/XYZ"}
spring-boot spring-cloud-feign
add a comment |
I am little new to Spring boot and I am using Feign Rest client to talk to my web service. But I'm getting my URL double and cannot invoke the intended service.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@GetMapping
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String from,
@PathVariable("to") String to);
}
status 404 reading
ExchangeServiceProxy#retrieveExchangeValue(String,String); content:
{"timestamp":"2018-11-22T05:50:45.822+0000","status":404,"error":"Not
Found","message":"No message
available","path":"/exchange/from/USD/to/XYZ/exchange/from/USD/to/XYZ"}
spring-boot spring-cloud-feign
I am little new to Spring boot and I am using Feign Rest client to talk to my web service. But I'm getting my URL double and cannot invoke the intended service.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@GetMapping
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String from,
@PathVariable("to") String to);
}
status 404 reading
ExchangeServiceProxy#retrieveExchangeValue(String,String); content:
{"timestamp":"2018-11-22T05:50:45.822+0000","status":404,"error":"Not
Found","message":"No message
available","path":"/exchange/from/USD/to/XYZ/exchange/from/USD/to/XYZ"}
spring-boot spring-cloud-feign
spring-boot spring-cloud-feign
asked Nov 22 '18 at 5:53
KeplerKepler
117213
117213
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You haven't put your Spring Starter Class in your question. If you are using Feign to client side load balancing @EnableFeignClients is enough to put in your Spring starter class. I think you have put both @GetMapping and @RequestMapping in your ExchangeServiceProxy which is unnecessary. Please remove @GetMapping since you have given the url pattern within the @RequestMapping. This might caused to double your url.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String
from,
@PathVariable("to") String to);
}
If you have hard coded like url="localhost:8000" then it will hit only to the instance that is running under the port 8000. It would be ideal to use Ribbon and Eureka naming server to get the full use of client side load balancing if your intention is what I have mentioned.
add a comment |
You need to add @EnableFeignClients
in main class after @SpringBootApplication
Like this:
@SpringBootApplication
@ComponentScan
@EnableScheduling
@EnableAsync
@EnableZuulProxy
@EnableFeignClients
public class ExampleApplication extends SpringBootServletInitializer{
public static void main(String args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
And then Create an Interface for FeignClient
like this:
@FeignClient(name = "service_name", url = "http://localhost:port_to_the_another_application")
public interface ExampleFeignClient {
@RequestMapping(value = "/mapping", method = RequestMethod.POST)
String createUserWallet(@RequestHeader("Authorization") String jwtToken);
}
I hope this will help.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53424653%2fdouble-the-url-when-using-feign-with-spring-boot%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You haven't put your Spring Starter Class in your question. If you are using Feign to client side load balancing @EnableFeignClients is enough to put in your Spring starter class. I think you have put both @GetMapping and @RequestMapping in your ExchangeServiceProxy which is unnecessary. Please remove @GetMapping since you have given the url pattern within the @RequestMapping. This might caused to double your url.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String
from,
@PathVariable("to") String to);
}
If you have hard coded like url="localhost:8000" then it will hit only to the instance that is running under the port 8000. It would be ideal to use Ribbon and Eureka naming server to get the full use of client side load balancing if your intention is what I have mentioned.
add a comment |
You haven't put your Spring Starter Class in your question. If you are using Feign to client side load balancing @EnableFeignClients is enough to put in your Spring starter class. I think you have put both @GetMapping and @RequestMapping in your ExchangeServiceProxy which is unnecessary. Please remove @GetMapping since you have given the url pattern within the @RequestMapping. This might caused to double your url.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String
from,
@PathVariable("to") String to);
}
If you have hard coded like url="localhost:8000" then it will hit only to the instance that is running under the port 8000. It would be ideal to use Ribbon and Eureka naming server to get the full use of client side load balancing if your intention is what I have mentioned.
add a comment |
You haven't put your Spring Starter Class in your question. If you are using Feign to client side load balancing @EnableFeignClients is enough to put in your Spring starter class. I think you have put both @GetMapping and @RequestMapping in your ExchangeServiceProxy which is unnecessary. Please remove @GetMapping since you have given the url pattern within the @RequestMapping. This might caused to double your url.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String
from,
@PathVariable("to") String to);
}
If you have hard coded like url="localhost:8000" then it will hit only to the instance that is running under the port 8000. It would be ideal to use Ribbon and Eureka naming server to get the full use of client side load balancing if your intention is what I have mentioned.
You haven't put your Spring Starter Class in your question. If you are using Feign to client side load balancing @EnableFeignClients is enough to put in your Spring starter class. I think you have put both @GetMapping and @RequestMapping in your ExchangeServiceProxy which is unnecessary. Please remove @GetMapping since you have given the url pattern within the @RequestMapping. This might caused to double your url.
@FeignClient(name= "exchange-service", url="localhost:8000")
public interface ExchangeServiceProxy {
@RequestMapping(value = "/exchange/from/{from}/to/{to}")
public ExchangeBean retrieveExchangeValue(@PathVariable("from") String
from,
@PathVariable("to") String to);
}
If you have hard coded like url="localhost:8000" then it will hit only to the instance that is running under the port 8000. It would be ideal to use Ribbon and Eureka naming server to get the full use of client side load balancing if your intention is what I have mentioned.
edited Nov 22 '18 at 15:21
answered Nov 22 '18 at 15:14


DilanDilan
72121018
72121018
add a comment |
add a comment |
You need to add @EnableFeignClients
in main class after @SpringBootApplication
Like this:
@SpringBootApplication
@ComponentScan
@EnableScheduling
@EnableAsync
@EnableZuulProxy
@EnableFeignClients
public class ExampleApplication extends SpringBootServletInitializer{
public static void main(String args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
And then Create an Interface for FeignClient
like this:
@FeignClient(name = "service_name", url = "http://localhost:port_to_the_another_application")
public interface ExampleFeignClient {
@RequestMapping(value = "/mapping", method = RequestMethod.POST)
String createUserWallet(@RequestHeader("Authorization") String jwtToken);
}
I hope this will help.
add a comment |
You need to add @EnableFeignClients
in main class after @SpringBootApplication
Like this:
@SpringBootApplication
@ComponentScan
@EnableScheduling
@EnableAsync
@EnableZuulProxy
@EnableFeignClients
public class ExampleApplication extends SpringBootServletInitializer{
public static void main(String args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
And then Create an Interface for FeignClient
like this:
@FeignClient(name = "service_name", url = "http://localhost:port_to_the_another_application")
public interface ExampleFeignClient {
@RequestMapping(value = "/mapping", method = RequestMethod.POST)
String createUserWallet(@RequestHeader("Authorization") String jwtToken);
}
I hope this will help.
add a comment |
You need to add @EnableFeignClients
in main class after @SpringBootApplication
Like this:
@SpringBootApplication
@ComponentScan
@EnableScheduling
@EnableAsync
@EnableZuulProxy
@EnableFeignClients
public class ExampleApplication extends SpringBootServletInitializer{
public static void main(String args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
And then Create an Interface for FeignClient
like this:
@FeignClient(name = "service_name", url = "http://localhost:port_to_the_another_application")
public interface ExampleFeignClient {
@RequestMapping(value = "/mapping", method = RequestMethod.POST)
String createUserWallet(@RequestHeader("Authorization") String jwtToken);
}
I hope this will help.
You need to add @EnableFeignClients
in main class after @SpringBootApplication
Like this:
@SpringBootApplication
@ComponentScan
@EnableScheduling
@EnableAsync
@EnableZuulProxy
@EnableFeignClients
public class ExampleApplication extends SpringBootServletInitializer{
public static void main(String args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
And then Create an Interface for FeignClient
like this:
@FeignClient(name = "service_name", url = "http://localhost:port_to_the_another_application")
public interface ExampleFeignClient {
@RequestMapping(value = "/mapping", method = RequestMethod.POST)
String createUserWallet(@RequestHeader("Authorization") String jwtToken);
}
I hope this will help.
answered Nov 22 '18 at 6:07


Pawan TiwariPawan Tiwari
257116
257116
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53424653%2fdouble-the-url-when-using-feign-with-spring-boot%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown