Servicio Spring Boot Rest | El método de solicitud ‘GET’ no es compatible

He creado un servicio de descanso hola mundial con bota de muelle. Puedo llamar al servicio a través del progtwig java independiente. También puedo llamarlo a través del complemento Advanced Rest Client para Chrome.

Pero cuando bash acceder a él a través de una página HTML independiente usando jQuery AJAX, recibo un error

WARN 3748 — [nio-9000-exec-2] osweb.servlet.PageNotFound: No se admite el método de solicitud ‘GET’

Cualquier ayuda es apreciada.

PD: estoy asumiendo que como puedo llamar al servicio web usando otros modos para que el controlador esté bien. Pero algo está mal como lo llamo desde el HTML.

Página HTML a continuación:

     Client    $(document).ready(function() { $("#Submit").click(function() { var input = { "name": $("#name").val(), "language": $("#language").val() }; var inputStr = JSON.stringify(input); alert(inputStr); $.ajax({ url: "http://localhost:9000/rest/greetMeObj/", method: "POST", data: inputStr, dataType: "jsonp", success: function(output) { // callback method for further manipulations var str = JSON.stringify(output); $("#output").text(data); }, error: function(data) { // if error occured $("#error").text(data); } }); }); });    


English French Dutch

Controlador de resorte a continuación

 @Controller @RequestMapping("/rest/*") public class GreetingController { private static final String TEMPLATE_EN = "Hello, %s!"; private static final String TEMPLATE_FR = "Bonjour, %s!"; private static final String TEMPLATE_NL = "Hallo, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping(value="/rest/greetMe", method= RequestMethod.GET) public @ResponseBody Greeting sayHello( @RequestParam(value = "name", required = false, defaultValue = "Stranger") String name, @RequestParam(value = "language", required = false, defaultValue = "en") String language) { return new Greeting(counter.incrementAndGet(), String.format(getTemplate(language), name)); } @RequestMapping(value="/rest/greetMeObj", method= RequestMethod.POST) public @ResponseBody Greeting sayHello( @RequestBody(required = true) Input input) { return new Greeting(counter.incrementAndGet(), String.format(getTemplate(input.getLanguage()), input.getName())); } private String getTemplate(String language) { String template; switch (language) { case "nl": case "NL": template = TEMPLATE_NL; break; case "fr": case "FR": template = TEMPLATE_FR; break; case "en": case "EN": default: template = TEMPLATE_EN; break; } return template; } } 

Supongo que la solución se describe aquí: ¿Por qué no se admite el método de solicitud de SpringMVC ‘GET’?

Ambos valores en RequestMapping deben ser iguales. Entonces, para cada valor, debe definir uno para GET y uno para POST.

 @RequestMapping(value="/rest/greetMe", method= RequestMethod.GET) public @ResponseBody Greeting sayHello( @RequestParam(value = "name", required = false, defaultValue = "Stranger") String name, @RequestParam(value = "language", required = false, defaultValue = "en") String language) { return new Greeting(counter.incrementAndGet(), String.format(getTemplate(language), name)); } @RequestMapping(value="/rest/greetMe", method= RequestMethod.POST) public @ResponseBody Greeting sayHello( @RequestBody(required = true) Input input) { return new Greeting(counter.incrementAndGet(), String.format(getTemplate(input.getLanguage()), input.getName())); } 

Compruebe su controlador, si ha asignado alguna de estas llamadas a la asignación predeterminada:

  @DeleteMapping() @PostMapping() @GetMapping() 

Está mapeado a path="/" . Por favor cámbialo a

  @DeleteMapping(path="/something") @PostMapping(path="/something") @GetMapping(path="/something")