私はUser APIを作成しています。ログインする前にgetUserByEmail()を呼び出そうとしています。私の問題は、HTTPパスERRORのためにマッピングされたあいまいなハンドラメソッドを取得することです。春同じURLですがパラメータのタイプが異なる
{ "タイムスタンプ"::1460226184275、 "ステータス":500、 "エラー": "内部サーバーエラー"、 "例外": "java.langでここ
@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);
}
は私が取得エラー応答であります.IllegalStateException "、" message ":" HTTPパス 'http://localhost:8080/user/fr'にマッピングされたあいまいなハンドラメソッド:{public org .springframework.http.ResponseEntity com.ffa.controllers.UserController.getUser(int)、public org.springframework .http。 ResponseEntity com.ffa.controllers.UserController.getUserByEmail(java.lang.String)} "、" path ":"/user /fr "}
私の問題は、私はGETが同じであるが、異なるパラメータタイプを持っている私と関係があることを知っている。どんな助けでも大歓迎です!
マッピング方法を組み合わせて、あなたのIDまたは電子メールアドレスに応じて使用をフェッチするロジックを用意してください – LearningPhase
現在、あなたのロジック/ユーザ/によると、それがidの電子メールかどうかはわかりません。どちらかが/ user/emailを持っていますか? Email = and/user/id?id = id – LearningPhase
@LearningPhase私はそれらを別々にしたいと思います。どちらを使用するかを知るためにこれをどのように変更しますか? – alcol92