如何将请求正文中的列表值发送到 Rest Api

Posted

技术标签:

【中文标题】如何将请求正文中的列表值发送到 Rest Api【英文标题】:How to send List value in Request Body to Rest Api 【发布时间】:2019-12-07 12:25:54 【问题描述】:

您好,我已经编写了一个 Rest Service 来接受 Long 值列表作为通过 RequestBody 的输入,下面给出了相同的代码:

@DeleteMapping("/files")
public ResponseEntity<?> deletefiles(@RequestBody List<Long> ids) 
     fileService.deleteSelectedfiles(ids);
     return ResponseEntity.ok().build();

当我尝试从 Postman 访问上述网址时,我收到以下错误:

"JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: [![enter image description here][1]][1]Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token\n at [Source: (PushbackInputStream); line: 1, column: 1]"

在 Postman 中,我以以下格式将数据作为原始数据发送

"ids": [1 ,2] 

谁能帮我解决这个问题

【问题讨论】:

您的请求正文不是数字数组。 粘贴你的js代码函数 【参考方案1】:
@RequestMapping(YOUR_REQUEST_MAPPINGS)
public void testArrayOfValues(@RequestParam List<String> values) 

  

【讨论】:

【参考方案2】:

你的有效载荷应该是一个

[1 ,2]

代替

"ids": [1 ,2]

第一个选项是一个 json 数组,第二个例子是一个 json body。 您可以将第一个与@RequestBody List&lt;Long&gt; ids 一起使用,或者将第二个与@RequestBody YourData data 一起使用

class YourData 
    List<Long> ids

【讨论】:

我已经尝试过您的建议@star67,但我收到以下异常:org.springframework.http.converter.HttpMessageNotReadableException:缺少所需的请求正文:public org.springframework.http.ResponseEntity>

以上是关于如何将请求正文中的列表值发送到 Rest Api的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data Rest:如何使用请求正文发送多部分文件

如何使用 Scala 在具有请求正文的 REST API 上执行 GET 请求?

如何将用户输入的值传递到 c# 中的请求参数正文中?

如何在Spring Boot Rest API中的BeanUtils.copyProperties中将String转换为枚举

尝试通过函数参数将正文发送到 API 时出现 KeyError

Django REST API 接受列表而不是发布请求中的字典