У меня есть Spring приложение, в котором я объявил мой класс так:Неоднозначные методы обработки для http-пути?
@Controller
@RequestMapping(value = "/rest/api/datasources/", produces = MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
public class MetadataServiceController {
//Two separate methods:
@RequestMapping(value="{datasourceName}")
public Object getLatestApiMetadata(@PathVariable String datasource,
@RequestParam (required = false) String datasourceNum,
@RequestParam (defaultValue = "true") String dataFields,
@RequestParam (required=false, defaultValue = "api") String visibility){
... //Implementation here
}
@RequestMapping(value="{apiVersion}")
public @ResponseBody List<DataSource> getAllMetadata(
@RequestHeader(value="sub-version", required=false, defaultValue="0.0") String minorVer,
@PathVariable String restApiVersion,
@RequestParam(required = false) String datasourceNum,
@RequestParam(defaultValue = "all") String visibility)
throws ObjectNotFoundException {
... //Implementation here
}
}
Но когда я пытаюсь достигнуть одного из этих остальных конечных точек, я получаю сообщение об ошибке сказав: java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path
и определяет эти два метода, как вопрос , У меня создалось впечатление, что, если я изменю параметры запроса, Spring не будет жаловаться на то, что они будут такими же через этот пост: http://www.coderanch.com/t/598675/Spring/handling-HTTP-Request-parameters, но ясно, что он все еще делает. У кого-нибудь есть предложения по тому, как обойти это? Благодаря!
Если я отправляю запрос на 'http: // your.server/rest/api/datasources/foo', какой метод следует вызывать? Как насчет 'http: // your.server/rest/api/datasources/bar'? –
@BoristheSpider ах да, но не я указал другой набор параметров запроса для путей? – user1871869
Нет, вы абсолютно этого не сделали - см. Мой ответ. –