728x90
반응형
REST(Representational State Transfer)
WWW과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식.
자원을 이름으로 구분하고 해당 자원의 상태를 주고받는 모든 것이 REST라고 할 수 있지만, 일반적으로 REST라고 하면 좁은 의미로 HTTP를 통해 CRUD를 실행하는 API를 뜻한다.
HTTP METHOD에서 PUT과 PATCH의 차이점은 아래 포스트에서 확인하세요.
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]
728x90
반응형
'spring' 카테고리의 다른 글
[spring] @Valid를 이용한 validation 체크와 custom annotation으로 validation (0) | 2020.10.31 |
---|---|
[springboot] sql script(schema.sql, data.sql) 실행 시 한글 깨짐 (0) | 2020.10.14 |
[springboot] MyBatis resultType이 Map일경우 key를 소문자로 만들기 (0) | 2020.10.14 |
[springboot] h2-console 접속이 안될 경우 문제 해결 (0) | 2020.10.14 |
[springboot] jar파일이 jsp경로를 못찾는 경우, intellij에서 war 빌드 (0) | 2020.10.11 |
댓글