SpringFramework/References
Object DeSerialization (JSON) (1) - @RequestBody
defacto standard
2018. 5. 3. 22:53
@RequestBody는, Client에서 Server로 객체의 내용을 전송할 때, 이를 객체로 DataBinding하여 사용할 때 용이하다.
네트워크를 통해서 전송하려면 Object는 무조건 String으로 전송해야 하는데, 다시 받는 곳에서는 String을 Object로 바로 받아서 사용한다면 굉장히 편할 것이다.
Client에서는 JavaScript Library인 JQuery의 $.ajax()에서 JSON.stringify()함수를 사용하여 Object를 String으로 변환시킨 후 이를 인자로 태워서 Request한다.
@RequestBody는 인자 앞에 붙여서 사용할 수 있다. 이때, JSON의 키 값이 받으려는 Object의 필드명과 동일해야 한다.
@RestController
@RequestMapping("/rest/reply")
public class ReplyController {
@Inject
ReplyService replyService;
@RequestMapping(value = "", method = RequestMethod.POST)
public ResponseEntity<?> addReply(@RequestBody ReplyVO reply) throws Exception {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = authentication.getName();
if (username == null)
return new ResponseEntity<Void>(HttpStatus.BAD_REQUEST);
reply.setReplydate(new Date());
reply.setReplyno(replyService.addReply(reply));
return new ResponseEntity<ReplyVO>(replyService.getReplyById(reply.getReplyno()), HttpStatus.OK);
}
}