, also erstelle ich eine Benutzer-API und versuche, getUserByEmail() vor dem Login aufzurufen. Mein Problem ist, dass ich eine Ambiguous-Handler-Methoden für den HTTP-Pfad ERROR zugeordnet.Spring GET same URL, aber verschiedene Parametertypen
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> getUser(@PathVariable("id") int id) {
System.out.println("Fetching User with id " + id);
User user = userService.findById(id);
if (user == null) {
System.out.println("User with id " + id + " not found");
return new ResponseEntity<User>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<User>(user, HttpStatus.OK);
}
@RequestMapping(value = "/user/{email}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> getUserByEmail(@PathVariable("email") String email) {
System.out.println("Fetching User with email " + email);
User user = userService.findByEmail(email);
if (user == null) {
System.out.println("User with email " + email + " not found");
return new ResponseEntity<User>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<User>(user, HttpStatus.OK);
}
Hier ist die Fehlerreaktion erhalte ich:
{ "Zeitstempel": 1460226184275, "status": 500, "Fehler": "Internal Server Error", "Ausnahme": "java.lang .IllegalStateException "," message ":" Für den HTTP-Pfad 'http://localhost:8080/user/fr' wurden mehrdeutige Handler-Methoden zugeordnet: {public org .springframework.http.ResponseEntity com.ffa.controllers.UserController.getUser (int), öffentliche org.springframework .http. ResponseEntity com.ffa.controllers.UserController.getUserByEmail (java.lang.String)} "," Pfad ":"/user /fr "}
Ich weiß, dass mein Problem etwas damit zu tun hat, dass ich ein GET habe, das dasselbe ist, aber unterschiedliche Parametertypen hat. Jede Hilfe würde sehr geschätzt werden!
Kombinieren Sie Ihre Mapping-Methoden und haben Logik in der Ort, die Verwendung abhängig von Ihrer ID oder E-Mail-Adresse abrufen – LearningPhase
Derzeit nach Ihrer Logik/Benutzer/weiß nicht, ob es eine E-Mail für ID ist. Entweder hast du/user/email? Email = und/user/id? Id = id – LearningPhase
@LearningPhase Ich möchte, dass sie getrennt sind, da jeder etwas anderes macht. Wie ändere ich das, damit es weiß, welches zu verwenden ist? – alcol92