Получаю ошибку - 500 RestApi
Доброго времени суток хочу получить список людей по имени, но к сожалению получаю ошибку сервера. В чем может быть моя ошибка.
Repository:
@Repository
public interface PersonRepository extends JpaRepository<Person, Integer> {
List<Person> getAllByName(String name);
}
Service:
@Service
@Transactional(readOnly = true)
public class PersonService {
private final PersonRepository personRepository;
@Autowired
public PersonService(PersonRepository personRepository) {
this.personRepository = personRepository;
}
public Person findOne(int id) {
Optional<Person> foundPerson = personRepository.findById(id);
return foundPerson.orElseThrow(PersonNotFoundException::new);
}
public List<Person> getPersonByName(String name) {
return personRepository.getAllByName(name);
}
}
Controller:
@RestController
@RequestMapping("/people")
public class PeopleController {
private final PersonService personService;
@Autowired
public PeopleController(PersonService personService) {
this.personService = personService;
}
@GetMapping
public List<Person> getPeople() {
return personService.findAll();
}
@GetMapping("/{id}")
public Person getPerson(@PathVariable("id") int id) {
return personService.findOne(id);
}
@GetMapping("/{name}")
List<Person> getAllByName(@PathVariable String name) {
return personService.getPersonByName(name);
}
@ExceptionHandler
private ResponseEntity<PersonErrorResponse> handleException(PersonNotFoundException exception) {
PersonErrorResponse personErrorResponse = new PersonErrorResponse(
"Person with id wasn't found", LocalDate.now()
);
return new ResponseEntity<>(personErrorResponse, HttpStatus.NOT_FOUND);
}
}
Ответы (1 шт):
Автор решения: Nofate
→ Ссылка
В ошибке же все написано. У вас два метода, привязаны к пути /people/{something}.
Если вы запросите, скажем, /people/42, контроллер не сможет понять, строку "42" вы имели в виду или число 42.
Так что для запроса списка пользователей по имени, замапьте метод getAllByName на отдельный путь типа /people/by-name/{name}


