Поиск отображения запроса Spring MVC для ближайшего соответствия параметрам. Сегодня мы столкнулись с хорошим примером того, почему эта текущая реализация проблематична. у нас есть 2 функции:
@RequestMapping(method = Array[RequestMethod](RequestMethod.DELETE), params = Array[String]("lastName", "firstName"), produces = Array[String]("application/json"))
def deletePersons1(request: HttpServletRequest, @RequestParam("lastName") lastName: String, @RequestParam("firstName") acref: String)
@RequestMapping(method = Array[RequestMethod](RequestMethod.DELETE), params = Array[String]("lastName", "birthDate"), produces = Array[String]("application/json"))
def deletePersons2(request: HttpServletRequest, @RequestParam("lastName") lastName: String, @RequestParam("birthDate") birthDate: Date)
HTTP-запрос:
DELETE http://host:port/deletePersons?lastName=smith&firstName=john&birthDate=08-10-2015
Пользователи хотели удалить только Смита и Джона, а также думали, что могут добавить дату рождения. Но так как первая функция не получает дату, а пользователь ошибся и ввел туда дату, то в нашем случае использовалась вторая функция, так как она была наиболее близкой к совпадению. до сих пор не знаю, почему второй, а не первый.
В результате все люди с фамилией Смит, родившиеся в..., были удалены.
Это реальная проблема! потому что мы хотели удалить только определенного человека, но в итоге удалили многих других.
Есть ли какое-нибудь решение для этого?