Try to search your question here, if you can't find : Ask Any Question Now ?

Need help resolving ambiguous mapping with Spring Rest Controllers

HomeCategory: stackoverflowNeed help resolving ambiguous mapping with Spring Rest Controllers
sourav asked 1 year ago

I have looked at the following posts

1) Error creating bean with name 'requestMappingHandlerAdapter'

2)Spring Boot Ambiguous mapping. Cannot map method

3) Spring mvc Ambiguous mapping found. Cannot map controller bean method

4) Spring MVC Ambiguous mapping. Cannot map

But I have not been able to figure out how to resolve my issue. I am creating a Spring Boot web application in which I am trying to map the following endpoints /quiz/score/{quizId} and /quiz/questions/{quizId} endpoints to two separate methods.

My functions are as follows

  @RequestMapping(name="/quiz/questions/{quizId}", method=RequestMethod.GET)
  public ResponseEntity<QuizQuestion> questions(@PathVariable String quizId) {
    QuizQuestion question = this.quizService.fetchQuestion(quizId);
    if (question == null) {
      return new ResponseEntity<QuizQuestion>(HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<QuizQuestion>(question, HttpStatus.OK);
  }

and

@RequestMapping(name="/quiz/score/{id}", method=RequestMethod.GET)
  public Score getScore(@PathVariable("id") String quizId) {
    return this.quizService.getScore(quizId);
  }

I am getting the following error

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map '/myapplication' method 
public com.project.myapplication.Score com.project.myapplication.QuizController.getScore(java.lang.String)
to {[],methods=[GET]}: There is already '/myapplication' bean method
public org.springframework.http.ResponseEntity<com.project.myapplication.QuizQuestion> com.project.myapplication.QuizController.questions(java.lang.String) mapped.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE]

. . . . . . .  .. . 

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map '/myapplication' method 
public com.project.myapplication.Score com.project.myapplication.QuizController.getScore(java.lang.String)
to {[],methods=[GET]}: There is already '/myapplication' bean method
public org.springframework.http.ResponseEntity<com.project.myapplication.QuizQuestion> com.project.myapplication.QuizController.questions(java.lang.String) mapped.
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:576) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]
    at 

I know that two methods have the same signature, but they have two unique endpoints. How can I resolve this issue? Any advice would be gratefully appreciated.

1 Answers
Best Answer
sourav answered 1 year ago
Your Answer

8 + 16 =

Popular Tags

WP Facebook Auto Publish Powered By : XYZScripts.com