【发布时间】:2020-03-30 18:59:39
【问题描述】:
我用一个简单的 post 和 get 方法编写了一个非常简单的控制器类。
今天是我第一次使用 Postman - 我不知道自己做错了什么,但每次使用 POST 映射时,我都会得到:
{
"timestamp": "2020-03-29T19:05:49.548+0000",
"status": 400,
"error": "Bad Request",
"message": "Required request body is missing: public int pl.futurecollars.controller.GreetingControler.saveGreeting(pl.futurecollars.controller.Greeting)",
"path": "/greetings"
}
控制器类:
@RestController
@RequestMapping("/greetings")
public class GreetingControler {
private Map<Integer, Greeting> greetings = new HashMap<>();
private int counter = 0;
@GetMapping
public Collection<Greeting> getGreetings() {
return greetings.values();
}
@PostMapping
public int saveGreeting(@RequestBody Greeting greeting){
greeting.setId(counter);
greetings.put(counter, greeting);
return counter++;
}
@DeleteMapping("/{id}")
public void deleteGreeting(@PathParam("id") int greetingId){
greetings.remove(greetingId);
}
}
我添加了一个@RequestBody,但它仍然说它丢失了。
如何解决这个问题?
【问题讨论】:
-
通过发送请求正文! (邮递员/curl/...?)
-
Greeting类的外观如何?您如何提出您的要求? -
curl = curl -X POST -H "Content-Type: application/json" -d '{... 问候 json ...}' localhost:8080/greetings {"timestamp":"2020- 03-29T19:19:03.648+0000","status":400,"error":"Bad Request","message":"JSON 解析错误:意外字符('.'(代码 46)):期待双倍- 引用开始字段名称;嵌套异常是 com.fasterxml.jackson.core.JsonParseException: Unexpected character ('.' (code 46)): was expected double-quote to start field name\n at [Source: (PushbackInputStream) ; line: 1, column: 3]","path":"/greetings"}j
-
..当然我希望你能帮我/想一下
{... greeting json ...}...我只是把它用作占位符:) ..我们不知道问候的样子喜欢。 -
@nazar_art - Greeting 类非常简单:两个字段,空的默认构造函数,getter 和 setter。
标签: java post controller postman