본문 바로가기
spring

[springboot] REST API 적용하기

by moonsiri 2020. 10. 14.
728x90
반응형

REST(Representational State Transfer)

WWW과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식.

 

자원을 이름으로 구분하고 해당 자원의 상태를 주고받는 모든 것이 REST라고 할 수 있지만, 일반적으로 REST라고 하면 좁은 의미로 HTTP를 통해 CRUD를 실행하는 API를 뜻한다.

 

 

 

HTTP METHOD에서 PUT과 PATCH의 차이점은 아래 포스트에서 확인하세요.

 

[HTTP METHOD] PUT vs PATCH 차이점

HTTP 메소드 중 PUT 과 PATCH가 있다. 뭔 차이여... PUT : 자원의 전체 교체, 자원내 모든 필드 필요  (만약 전체가 아닌 일부만 전달할 경우, 전달한 필드외 모두 null or 초기값 처리되니 주의!!) PATCH : �

papababo.tistory.com

 

 

  URI Method
게시글 목록 화면 /board GET
게시글 상세 화면 /board/{postNo} GET
게시글 등록 화면 /board/post GET
게시글 등록 /board/post POST
게시글 수정 화면 /board/post/{postNo} GET
게시글 수정 /board/post/{postNo} PUT
게시글 삭제 /board/post/{postNo} DELETE

 

 

BoardController.java

@Controller
@RequestMapping("/board")
public class BoardController {

    @Resource
    private BoardService boardService;

    // ...

    /* 게시글 등록 */
    @PostMapping("/post")
    @ResponseBody
    public int createPost(@PathVariable("boardNo") long boardNo, @RequestBody Map<String, Object> paramsMap) throws Exception {
        return boardService.insertPostMap(paramsMap);
    }

    /* 게시글 조회 */
    @GetMapping("/post/{postNo}")
    public ModelAndView updatePostView(@PathVariable("postNo") long postNo, ModelAndView mav) throws Exception {
        mav.addObject("post", boardService.selectPostMap(postNo));
        mav.setViewName("board/postUpdateView");
        return mav;
    }

    /* 게시물 수정 */
    @PutMapping("/post/{postNo}")
    @ResponseBody
    public int updatePostMap(@PathVariable("postNo") long postNo, @RequestBody Map<String, Object> paramsMap) throws Exception {
        return boardService.updatePostMap(paramsMap);
    }

    /* 게시물 삭제 */
    @DeleteMapping("/post/{postNo}")
    @ResponseBody
    public int deletePostMap(@PathVariable("postNo") long postNo) throws Exception {
        return boardService.deletePostMap(postNo);
    }

}
​

 

@PathVariable 어노테이션을 적용할 경우 null이나 공백 값이 들어가는 parameter라면 적용하지 말자.

 

 

삭제 예제)

$('#delBtn').click(function() {
	if (confirm("게시물을 정말로 삭제하시겠습니까?")) {
		var url = "/board/post/" + postNo;

		$.ajax({
			url: url
			,type: "DELETE"
			,success: function(res) {
				if (res == 1) {
					alert("게시물이 삭제되었습니다.");
					location.href = "/board/";
				}
			}
			,error: function(res, a) {
				alert("서버에서 처리중 에러가 발생하였습니다.");
			}
		});
	}
});

 

 

 

[Reference]

https://github.com/moonsiri/spring-webboard

728x90
반응형

댓글