2019. 10. 6. 22:07ㆍProject B (SPMS)/Project B 파트5
댓글 컨트롤러 설계
작업 | URL | HTTP 전송방식 |
등록 | /replies/new | POST |
조회 | /replies/:rno | GET |
삭제 | /replies/:rno | DELETE |
수정 | /replies/:rno | PUT or PATCH |
페이지 | /replies/pages/:bno/:page | GET |
REST 방식으로 동작하는 URL 을 설계 시에는 PK 기준으로 작성하는 것이 좋다.
단, 댓글의 목록은 PK를 사용할 수 없기때문에 파라미터로 필요한 게시물의 번호와 페이지 번호 정보들을 URL 에서 표현하는 방식을 사용한다.
댓글 등록 작업
src/main/java
com.spms.controller
ReplyController.java
create()
package com.spms.controller;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.spms.domain.ReplyVO;
import com.spms.service.ReplyService;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j;
@RequestMapping("/replies/")
@RestController
@Log4j
@AllArgsConstructor
public class ReplyController {
private ReplyService replyService;
@PostMapping(value = "/new", consumes = "application/json", produces = { MediaType.TEXT_PLAIN_VALUE })
public ResponseEntity<String> create(@RequestBody ReplyVO reply) {
log.info("ReplyVO: " + reply);
int insertCount = replyService.register(reply);
log.info("Reply INSERT COUNT: " + insertCount);
return insertCount == 1 ? new ResponseEntity<>("success", HttpStatus.OK)
: new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
REST 방식으로 처리 시 주의해야할 점
브라우저나 외부에서 서버를 호출 시 데이터의 포멧과 서버에서 보내주는 데이터 타입을 명확하게 설계해야 한다.
예를 들어 댓글 등록의 경우 브라우저에서는 JSON 타입으로 된 댓글 데이터를 전송하고, 서버에서는 댓글의 처리결과가 정상적으로 되었는지 문자열로 결과를 알려주도록 한다.
create() 는 @PostMapping으로 POST 방식으로만 동작하도록 설계하고,
comsumes 와 produces를 이용해서 JSON 방식의 데이터만 처리하도록 하고,
문자열을 반환하도록 설계한다.
create() 의 파라미터는 @RequestBody를 적용해서 JSON 데이터를 ReplyVO 타입으로 변환하도록 지정한다.
댓글 등록 작업 테스트 : Restlet client 실행
테스트 시에는 POST 방식으로 전송
Content-Type은 application/json 으로 지정
데이터는 존재하는 게시물 번호(bno)와 댓글 내용(reply), 댓글 작성자(replyer)를 JSON 문법에 맞게 작성
작성된 댓글은 데이터베이스에 정상적으로 추가됐는지 확인한다.
댓글 결과 테스트 리턴값 200 이 나오면 정상적으로 처리됐다는 의미이다.
'Project B (SPMS) > Project B 파트5' 카테고리의 다른 글
[B -2-37] Ajax 댓글 처리 10 (0) | 2019.10.08 |
---|---|
[B -2-36] Ajax 댓글 처리 9 (0) | 2019.10.08 |
[B -2-34] Ajax 댓글 처리 7 (0) | 2019.10.06 |
[B -2-33] Ajax 댓글 처리 6 (0) | 2019.10.06 |
[B -2-32] Ajax 댓글 처리 5 (0) | 2019.10.06 |