【发布时间】:2018-08-21 15:40:50
【问题描述】:
使用 Spring Boot,我使用单个资源构建了一个玩具 REST 服务,如下所示:
@RestController
@RequestMapping("/checkout")
public class CheckoutRestController {
@PostMapping("/book")
public boolean buyBook(@RequestParam CreditCard creditCard, @RequestParam ShippingAddress shippingAddress) {
return true;
}
}
CreditCard 和 ShippingAddress 都是我编写的 POJO(普通的旧 Java 对象)。
我已尝试使用此有效负载发布到此端点:
{
"creditCard" : {
"nameOnCard":"foo",
"number":12345678,
"expiryMonth":12,
"expiryYear":2018,
"ccv":100
},
"shippingAddress" : {
"steert":"foor",
"houseNumber":"1a",
"city":"bar",
"state":"bazz",
"country":"buzz",
"zipCode":"booz"
},
}
但我得到一个错误:
{
"timestamp": "2018-03-13T11:36:52.745+0000",
"status": 400,
"error": "Bad Request",
"message": "Required CreditCard parameter 'creditCard' is not present",
"path": "/checkout/book"
}
我知道一种解决方法是将两个 POJO 都包装在一个请求包装器中,但除非我真的必须这样做,否则我宁愿不这样做。
是否可以发布两个 @RequestParam 注释对象?如果是这样,JSON 会是什么样子?
【问题讨论】:
-
创建另一个类并创建对象,gettter,setter for CreditCard,ShippingAddress 然后使用新类的@requestBody 对象
标签: java spring rest spring-boot