gpt4 book ai didi

java - 在 Spring Boot 中如何检测请求正文中的 JSON 对象是否为空?

转载 作者:行者123 更新时间:2023-12-02 09:56:37 31 4
gpt4 key购买 nike

当 REST 请求正文为空(例如仅包含 {})时,我想返回错误,但无法检测请求正文是否包含空 JSON。

我尝试更改@RequestBody(required = true),但它不起作用。

@PatchMapping("{id}")
public ResponseEntity<Book> updateAdvisor(@PathVariable("id") Integer id,
@Valid @RequestBody BookDto newBook) {
Book addedBook = bookService.updateBook(newBook);
return new ResponseEntity<>(addedBook,HttpStatus.OK);
}

如果发送的正文包含空 JSON,我应该返回异常。如果正文不为空并且至少提供了一个元素,我将不会返回错误。

最佳答案

尝试@RequestBody(required = false)

当没有请求正文时,这会导致 newBook 参数为 null。

以上内容仍然有效,并且是原始问题的答案。

要解决新编辑的问题:

  1. @RequestBody BookDto newBook 参数更改为字符串参数(例如,@RequestBody String newBookJson)。
  2. 执行转换前验证(例如“正文是否为空 JSON 字符串值”)。
  3. 如果正文包含有效的 JSON,将 JSON 解析为对象(下面的示例)。
@Autowired
private ObjectMapper objectMapper; // A Jackson ObjectMapper.

@PatchMapping("{id}")
public ResponseEntity<Book> updateAdvisor(
@PathVariable("id") Integer id,
@Valid @RequestBody String newBookJson)
{
if (isGoodStuff(newBookJson)) // You must write this method.
{
final BookDto newBook = ObjectMapper.readValue(newBookJson, BookDto.class);

... do stuff.
}
else // newBookJson is not good
{
.. do error handling stuff.
}
}

关于java - 在 Spring Boot 中如何检测请求正文中的 JSON 对象是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956503/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com