У меня есть служба Micronaut, которая вызывается из клиента с помощью вызова AJAX, реализованного в JQuery. Сервис Micronaut представлен ниже:
@Controller("/ajaxcaller")
public class AjaxService
{
@Get("/printit")
@Produces(MediaType.TEXT_PLAIN)
public String updateData(Session theSess)
{
System.out.println("Accessing from AJAX.");
return("Successful!");
}
}
Ниже приведен код Javascript, который вызывает службу микронавтов:
$.ajax({
url : '/ajaxcaller/printit',
type: "GET",
contentType: 'application/text',
success: function(data, textStatus, jqXHR)
{
alert("Get successful! "+data);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert("Get failed! Error: "+jqXHR.status+", "+errorThrown);
}
});
К сожалению, несмотря на то, что я говорю серверу и клиенту обрабатывать простой текст, вызов AJAX завершается ошибкой со следующим сообщением:
Get failed! Error: 415, Unsupported Media Type
Обнаружил ли я ошибку в обработчиках контроллеров Micronaut или мне что-то не хватает в коде клиента или сервера? Есть ли способ заставить этот вызов AJAX работать?
ОБНОВЛЕНИЕ: следуя совету Джеймса в ответе 1 ниже, в код были внесены следующие изменения, как показано ниже:
@Controller("/ajaxcaller")
public class AjaxService
{
@Get("/printit")
@Consumes("application/text")
public String updateData(Session theSess)
{
System.out.println("Accessing from AJAX.");
return("Successful!");
}
}
Я все еще получаю сообщение об ошибке 415, когда пытаюсь использовать службу.
Поскольку я ранее создавал и успешно использовал другие службы Get в Micronaut, я провел тест на этой, используя другую страницу. По сути, вместо использования вызова ajax для вызова службы я использовал следующую строку в файле HTML:
window.location.href = '/ajaxcaller/printit';
Вызов этого вызывает создание новой страницы, которая отображает строку, возвращаемую службой (что, конечно, было ожидаемым поведением). Ошибок 415 не возникает, даже если я удалю аннотацию @Consumes.
Очевидно, что служба Micronaut обрабатывает вызов AJAX иначе, чем вызов обычной страницы. Есть ли параметр на стороне AJAX, который мне не хватает, или есть ошибка в Micronaut, препятствующая успешным вызовам AJAX?