@RestController
@RequestMapping("/api/videogames")
public class VideoGameController {
private final VideoGameRepository videoGameRepository;
public VideoGameController(VideoGameRepository videoGameRepository) {
this.videoGameRepository = videoGameRepository;
}
@ResponseStatus(HttpStatus.CREATED)
@PostMapping("")
void create(@RequestBody VideoGame videoGame) {
videoGameRepository.create(videoGame);
}
}
Я хочу разрешить клиенту отправлять запрос POST, который может содержать или не содержать все поля записи видеоигры.
Я пробовал просто установив для значения поля значение null в теле JSON как таковое, а затем отправив запрос:
но я получаю ответ со статусом 500 «Внутренняя ошибка сервера».
Я также пробовал аннотировать поля в записи с помощью @Nullable, но я получаю предупреждение в репозитории о том, что аргумент может быть нулевым.
Что я могу сделать, чтобы добиться этого? Нужно ли мне создать класс вместо записи для обработки нулевых значений или есть более «упругий» способ добиться этого. Я также рассматривал возможность использования опциональных опций, но читал, что на самом деле это не то, чего хотели добиться с помощью опциональных опций. Я также не хочу запрещать клиенту передавать полную запись, поскольку в моем случае это не имеет смысла.
Assert.state(newVideoGame == 1, "Failed to insert new videoGame"); } } [/code] и контроллер для этого: [code]@RestController @RequestMapping("/api/videogames") public class VideoGameController {
private final VideoGameRepository videoGameRepository;
public VideoGameController(VideoGameRepository videoGameRepository) { this.videoGameRepository = videoGameRepository; }
@ResponseStatus(HttpStatus.CREATED) @PostMapping("") void create(@RequestBody VideoGame videoGame) { videoGameRepository.create(videoGame); } } [/code] Я хочу разрешить клиенту отправлять запрос POST, который может содержать или не содержать все поля записи видеоигры. Я пробовал просто установив для значения поля значение null в теле JSON как таковое, а затем отправив запрос: [code]{ "id": 1, "title": "NewGame", "console": "Xbox", "genre": "Action", "publisher": "CBGAMES", "developer": "CBGAMES", "critic_score": 10.0, "total_sales": 9.9, "na_sales": 5.0, "jp_sales": 2.2, "pal_sales": 0.5, "other_sales": 0.1, "release_date": "2025-01-07", "last_update": null } [/code] но я получаю ответ со статусом 500 «Внутренняя ошибка сервера». Я также пробовал аннотировать поля в записи с помощью @Nullable, но я получаю предупреждение в репозитории о том, что аргумент может быть нулевым. Что я могу сделать, чтобы добиться этого? Нужно ли мне создать класс вместо записи для обработки нулевых значений или есть более «упругий» способ добиться этого. Я также рассматривал возможность использования опциональных опций, но читал, что на самом деле это не то, чего хотели добиться с помощью опциональных опций. Я также не хочу запрещать клиенту передавать полную запись, поскольку в моем случае это не имеет смысла.
У меня есть запись в видеоигре:
public record VideoGame(
@Positive
Integer id,
@NotEmpty
String title,
@NotEmpty
String console,
@NotEmpty
String genre,
String publisher,
String developer,
Double critic_score,
Double other_sales,
LocalDate...
У меня есть запись в видеоигре:
public record VideoGame(
@Positive
Integer id,
@NotEmpty
String title,
@NotEmpty
String console,
@NotEmpty
String genre,
String publisher,
String developer,
Double critic_score,
Double other_sales,
LocalDate...
У меня есть запись в видеоигре:
public record VideoGame(
@Positive
Integer id,
@NotEmpty
String title,
@NotEmpty
String console,
@NotEmpty
String genre,
String publisher,
String developer,
Double critic_score,
Double other_sales,
LocalDate...
У меня есть запись в видеоигре:
public record VideoGame(
@Positive
Integer id,
@NotEmpty
String title,
@NotEmpty
String console,
@NotEmpty
String genre,
String publisher,
String developer,
Double critic_score,
Double other_sales,
LocalDate...
Когда я сравниваю короткие значения, допускающие значение NULL, компилятор сначала преобразует их в целые числа, чтобы выполнить сравнение с NULL. Например, рассмотрим этот простой код: