Мы работаем над сервисом REST, и мы используем Spring MVC для этого же. Мы сталкиваемся с проблемой URL-адреса для решения проблемы. Это примерно то, что мы пытаемся сделатьДифференцируя URL с параметрами Пути
Предположим, что у нас есть люди с их домашними животными
//Class level request mapping
@RequestMapping("/persons")
// Mapping to access a specific person inside one of the methods
@RequestMapping(value="/{personId}", method= RequestMethod.GET
//.... getPerson method
// Mapping to access a specific person's pets inside one of the methods
@RequestMapping(value="/{personId}/pets", method= RequestMethod.GET
// getPersonPets method
Если запрос приходит как «/ человек/P12323233», где P12323233 является человек идентификатор, он решает методом getPerson , Если запрос приходит как «/ persons/P12323233/pets», где P12323233 является идентификатором человека, он разрешает метод getPersonPets.
Так что до сих пор все в порядке. Но Если запрос приходит как «/ people/pets», запрос разрешает метод getPerson. Хотя мы можем обрабатывать это как случай ошибки внутри метода getPerson, мы пытаемся проверить, есть ли способ разрешения этого вызова getPersonPets метод.
мы до сих пор обсуждаем ли подходящее место, чтобы обрабатывать этот случай является getPerson или getPersonPets метод. Этими спорами в стороне, мы хотели бы знать, является ли он даже техническим выполним для достижения разрешения к методу getPersonPets.
Цените любую помощь.
URL, четко отображает первый метод. Поэтому, если '' pets "' является существующим идентификатором человека, он должен вернуть этого человека. Если это не так, он должен вернуть ошибку 404 Not Found. Вызов 'getPersonPets()' не имеет особого смысла, и вы все равно не сможете вернуть что-либо полезное, так как у вас нет идентификатора человека, чтобы найти домашних животных. Я сразу же прекратил бы обсуждение :) –
Имеет смысл, что когда есть URL-адрес/лица/домашние животные, он попытается вызвать первый метод и попытается найти человека с идентификатором «домашние животные». если он не найдет, он даст 404. Второй метод никогда не будет выполнен в этом случае. Thnx для ценного ввода. – user2707141