Как правильно разместить объект json в Spring Boot Rest - PullRequest
0 голосов
/ 23 мая 2019

Я новичок в Spring Boot Rest и пытаюсь использовать объект post ab в качестве запроса на отдых. Но это не работает, и я получаю нулевой возврат:

Это мой Объект , который я хочу опубликовать :

public class Flight {
    private String code;
    private Route route;
    private LocalDateTime departure;
    private LocalDateTime arrival;
    //Constructor
   //Getters and Setters

}

Это Маршрут Класс:

public class Route {
    private final Airport from;
    private final Airport to;
//Constructor
//Getters
}

Это мой Аэропорт Класс:

public class Airport {
    private final String code;
    private final String name;

 //Constructor
//Getters
}

Это мой контроллер :

@RequestMapping(value = "/testflight", method = RequestMethod.POST)
    public Flight createFlight(@RequestBody Flight inputPayload) {
        Flight response = inputPayload;
        response.setCode(inputPayload.getCode());
        response.setRoute(inputPayload.getRoute());
        response.setDeparture(inputPayload.getDeparture());
        response.setArrival(inputPayload.getArrival());
        System.out.println("Flight details are:" + "\n" + inputPayload.getCode() + "\n" + inputPayload.getRoute() + "\n" + inputPayload.getDeparture() + "\n" + inputPayload.getArrival());
        return response;
    }

А это мой JSON :

{ "flight": {
    "code" : "THY1770",
    "route": {
        "airport": [
            { "code": 1, "name": "IST" },
            { "code": 2, "name": "STG" }
        ],
    "departure" : "2014-01-01",
    "arrival" : "2014-01-01"
}
}
}

Когда я публикую этот JSON, я получаю следующее:

Детали рейса: ноль ноль ноль нуль

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Поскольку контроллер размещен только частично (то есть: только метод, а не полный класс), я предполагаю, что он настолько прост, насколько это возможно, и что он аннотирован как @ RestController.

Может показаться, что у вас есть несколько расхождений между объектами и полезной нагрузкой JSON, которую вы передаете.

Простой способ создать JSON, который примет ваш контроллер, - это открыть метод в контроллере, который не требуетпараметр в качестве входа и генерирует полет в качестве выхода.Этот вывод вы можете затем использовать в качестве шаблона для построения ваших последующих запросов JSON.

Попробуйте опубликовать следующий JSON:

{
    "code" : "THY1770",
    "route": {
        "from": {
            "code": "ABC",
            "name": "My Airport 1"
        },
        "to": {
            "code": "DEF",
            "name": "My Airport 2"
        }
    }
    "departure" : null,
    "arrival" : null
}

Обратите внимание, что в моем ответе я установил даты равными нулю,Для них вы должны убедиться, что предоставленный вами формат принят.Используйте трюк, который я объяснил в начале, чтобы попытаться выяснить один из возможных форматов даты.

Кроме того, помните, что с датами очень трудно справиться.В вашем конкретном случае вы, вероятно, захотите убедиться, что даты отправляются вместе с их временем и часовым поясом.

Кроме того, помогите себе с Project Lombok для получателей и установщиков, когда вы получите время.Это сэкономит вам много стандартного кода, который в случае геттеров и сеттеров слишком часто является источником неожиданных проблем.

1 голос
/ 23 мая 2019

Код внутри самого контроллера, вероятно, неверен: Нет смысла копировать ссылку на inputPayload и затем вызывать сеттер для того же объекта:

Я думаю, учитывая toString, реализованный в Flight классе, вы можете:

@PostMapping("/testflight") // this is just a better syntax than @RequestMapping
public Flight createFlight(@RequestBody Flight inputPayload) {
    System.out.println(inputPayload); // just to test yourself   
    return inputPayload;
}

Теперь, сказав, что все отображения сделаны правильно, и аннотации также помещаются по мере необходимости, поэтому, если это не сработает, ошибка может быть где-то еще (не опубликовано в вопросе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...