2017-02-02 3 views
0

У меня есть 2 метода в моем весеннем контроллер загрузки RESTSpring GET и PATCH запрос

вот мой REST код CONTROLLER

@RestController 
public class MainRestController { 

@RequestMapping(value = "/",method=RequestMethod.POST) 
public String startMigration(){ 
     return "POSt"; 
} 

@RequestMapping(value = "/",method=RequestMethod.PATCH) 
public String PUT(){ 
     return "PUT"; 
} 

/* 
* If i commnet this method and un comment following method it will run 
* */ 
@RequestMapping(value = "/{name}",method=RequestMethod.PUT) 
public String PATCH(@PathVariable String name){ 
     return "PATCH"; 
} 

/*@RequestMapping(value = "/",method=RequestMethod.PATCH) 
public String PATCH(){ 
     return "PATCH"; 
}*/ 

@RequestMapping(value = "/",method=RequestMethod.DELETE) 
public String DELETE(){ 
     return "DELETE"; 
} 
} 

и вот мой CONTROLLER код

@Controller 
public class MainController { 

@RequestMapping(value = "/",method=RequestMethod.GET) 
public String getMainPage(){ 
    return "index.html"; 
} 
} 

Теперь вопрос когда я нахожу запрос PATCH http://localhost:8080/ it return

{ 
"timestamp": 1486041782895, 
"status": 405, 
"error": "Method Not Allowed", 
"exception":"org.springframework.web.HttpRequestMethodNotSupportedException", 
"message": "Request method 'PATCH' not supported", 
"path": "/" 
} 

и когда я ударил запрос GET http://localhost:8080/ это вернуть

Whitelabel Error Page 
This application has no explicit mapping for /error, so you are seeing this as a fallback. 
Thu Feb 02 19:00:18 IST 2017 
There was an unexpected error (type=Method Not Allowed, status=405). 
Request method 'GET' not supported 

может кто-нибудь сказать мне причину?

+0

Можете ли вы добавить образец, демонстрирующий приложение SB? – dmahapatro

+0

Я добавил свой код класса – atiwari54

ответ

0

Теперь вопрос, когда я ударил запрос PATCH http://localhost:8080/ это вернуть

{ 
"timestamp": 1486041782895, 
"status": 405, 
"error": "Method Not Allowed", 
"exception":"org.springframework.web.HttpRequestMethodNotSupportedException", 
"message": "Request method 'PATCH' not supported", 
"path": "/" 
} 

Эта ошибка происходит потому, что вы объявили метод, ожидающий PathVariable в методе.

Если вы хотите работать без прохождения переменной, вы должны сделать что-то вроде:

@RequestMapping(method=RequestMethod.PATCH) 
public @ResponseBody String patch(@RequestParam(name = "name", required = false) String name){ 
    return "ANOTHER PATCH"; 
} 

Так что PATCH запрос http://localhost:8080/ должен вернуть «ДРУГОЙ PATCH»

Был ли этот вопрос?

+0

Моя проблема с запросом GET, когда я комментирую мой метод PATCH. Начало работы – atiwari54

+0

Я не эксперт, но вы, вероятно, написали класс с контроллером вместо RestController. В аннотации RestController методы ResponseBody инкапсулируются. При использовании контроллера необходимо использовать аннотацию ResponseBody (в классе или методах), которая автоматически сериализует возвращаемое значение в соответствии с возможностями внешнего клиента и библиотеками, доступными в пути к классам. Возможно, какой-то эксперт может объяснить нам, почему. –

+0

Да, у меня есть 1 контроллер, в котором я написал GET для UI (html) и один REST-контроллер для веб-сервисов, который содержит метод PATCH. , когда я даю псевдоним с requestmapping, тогда он работает правильно, но m не дает никакого псевдонима, работающего только с "/", тогда его не работает – atiwari54