我写的代码应该以相反的顺序返回字符串,但我只返回了数组,这是错误的
@PostMapping("/reverse")
public List<String> reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
.collect(Collectors.toList());
}
сURL命令
curl -H "Content-Type: application/json" -d "a1+a2+a3+a4" localhost:8080/hello/reverse
输出
["a4","a3","a2","a1"]
但这是错误的
需要像这样退回
curl -H "Content-Type: application/json" -d "a1+a2+a3+a4" localhost:8080/hello/reverse
不带数组和逗号的输出
a4+a3+a2+a1
默认情况下,Spring将使用Jackson
将从端点返回的对象(至少在RestController
的情况下(序列化为JSON。要克服这个问题,只需从端点返回一个String
,并使用Collectors.joining("+")
而不是Collectors.toList
:
@PostMapping("/reverse")
public String reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
.collect(Collectors.joining("+"));
}
这可能会对您有所帮助:
@PostMapping("/reverse")
public String reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
.collect(Collectors.joining("+"));
}
如果你想以纯文本形式发送,那么用以下内容重新包装邮戳:
@PostMapping("/reverse",产生=org.springframework.http.MediaType.TEXT_PLAIN(
这将起作用:
{
@PostMapping("/reverse", produces = MediaType.TEXT_PLAIN)
public String reverseList(@RequestBody String string) {
List<String> stringList = Arrays.asList(string.split("[+,]"));
return IntStream.range(0, stringList.size())
.mapToObj(i -> stringList.get(stringList.size() - 1 - i))
}