Почему вместо ответа json -объекта я получаю ответ «404 not found»? - PullRequest
0 голосов
/ 13 января 2020

Пожалуйста, помогите мне. Почему вместо ответа json -объекта я получаю ответ «404 not found»?

Я отправляю на сервер следующий json -объект:

let dayEvent = { "dateEvent": "someEvent" };
$.ajax({
    url: "/day",
    type: 'post',
    data: JSON.stringify(dayEvent),
    contentType: 'application/json',
    dataType: 'json'
}).done(function (data) {
    console.log(data);
    $("#response").text("Success: " + data);
}).fail(function (e) {
$("#response").text("Error: " + e); });

Далее контроллер обрабатывает json -объект:

@RestController
public class TaskExistController {
    @RequestMapping(method=RequestMethod.POST, produces="application/json", value="/day")
    public String dayEvent(@RequestBody TaskDataModel day) {

        System.out.println(day.getDateEvent());
        ObjectMapper objectMapper = new ObjectMapper();
        String json = null;
        try {
            json = objectMapper.writeValueAsString(day.getDateEvent());
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return json;
    }
}

Код TaskDataModel:

public class TaskDataModel {
String dateEvent;

public void setDateEvent(String dateEvent) {
    this.dateEvent = dateEvent;
}

public String getDateEvent() {
    return dateEvent;
}

@Override
public String toString() {
    return "TaskDataModel [dateEvent=" + dateEvent + "]";
}}

Ответы [ 3 ]

0 голосов
/ 13 января 2020

Я предполагаю, что ваше приложение Spring Server работает на http://localhost: 8080 . Поэтому попробуйте:
url: "http://localhost:8080/day"

Я также вижу, что вы используете приложение contentType / json, а на стороне сервера вы заявляете: produces="application/json", но не consumes="application/json" Однако это не является причиной из 404, но кое-что вы могли бы добавить.

Также полезно знать, что создание экземпляров ObjectMapper относительно дорого. Поэтому лучше объявлять его на уровне класса, а не каждый раз, когда вызывается ваша конечная точка.

0 голосов
/ 13 января 2020

Добавьте расход к своей конечной точке, чтобы принять JSON

consumes = "application/json"
0 голосов
/ 13 января 2020

Ваш REST URL не так? Возможно, измените URL вашего сервера на (http://localhost:8080):

$.ajax({
    url: "http://localhost:8080/day",
    type: 'post',
    data: JSON.stringify(dayEvent),
    contentType: 'application/json',
    dataType: 'json'
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...