RESTful
json→ajax→RESTful→URI설계
RESTful이란(spring과 관련x)
로이필링이 만든것
URI설계이다.
URI(URL과 다름)
/board/board.jsp 이런식이었는데 (=리소스 끌고온것)
이제 RESTful을 사용하면 /board/1000 이렇게 치고 들어간다.( = 해당 리소스를 찾는게 아니라 board라는 것에 URL에 응용을해서 1000번째글을 찾아들어간다.)
1000번째글 + select
1000번째글 + update
1000번째글 + delete
1000번째글 + insert
REST API 설계 예시↓
:id 는 {bid}와 같은 의미
수정과 삭제에 put과 delete를 직접 제공
put은 수정, delete는 삭제
근데 board/delete/1000 처럼 다이렉트로 의미로 나타내면 안된다.(권장사항)
그냥 board/1000이렇게 나타내기
1. board들의 리스트 표시
[RestBoardController.java]
@Log4j
@AllArgsConstructor
@RestController // 스프링 4.0부터 지원
@RequestMapping("/restful/*")
public class RestBoardController {
// 5버전으로 오면서 @Autowired 를 안넣어줘도 알아서 객체생성됨
private BoardService boardService;
// 1. list(처음 진입화면이므로 화면이 깜박여도 상관없으므로 @Controller방식으로 접근 - 이땐 list를 리턴)
@GetMapping("/board")
public ModelAndView list(ModelAndView mav) {
mav.setViewName("rest_list");//어떤 jsp를 불러올지
mav.addObject("list", boardService.getList());
return mav;// 이제 return값이 view가 아니라
}
rest_list.jsp
localhost:8282/board/restful/board로 치고들어간다.
2. content_view 표시
[RestBoardController.java]
@GetMapping("/board/{bId}")
// public String rest_content)view(@PathVriable("bId) String bId, Model model)
// 이렇게 path variable로 처리해도 되지만 command객체가 있기때문에 걍 밑에있는 코드처럼 처리한다.
public String rest_content_view(BoardVO boardVO, Model model) {
log.info("rest_content_view");
model.addAttribute("content_view", boardService.getBoard(boardVO.getbId()));
return "content_view";
}
3. delete 표시
delete는 기본적으로 form태그에서 지원하지않는다. form태그는 post와 get방식만 지원하기 때문
따라서 delete put이런건 다 javascript ajax로 처리한다!!! RESTful이다 하면
[RestBoardController.java]
@DeleteMapping("/board/{bId}")
public ResponseEntity<String> rest_delete(BoardVO boardVO, Model model) {
// ResponseEntity는 restful을 위해 제공되는 대표적인 것 중 하나이다.
ResponseEntity<String> entity = null;
log.info("rest_delete..");
try {
boardService.remove(boardVO.getbId());
// 삭제가 성공하면 성공 상태메시지 저장
entity = new ResponseEntity<String>("SUCCESS", HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
// 댓글 삭제가 실패하면 실패 상태메시지 저장
entity = new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
}
// 삭제 처리 HTTP 상태 메시지 리턴
return entity;
}
rest_list.jsp
event.preventDefault(); - 기존에있던 이벤트 기능 다 끊어라
ajax를 통해서 type 을 delete로 넣는다.
========================================================================================================================================================
exerd툴 설치
툴사용법
========================================================================================================================================================
오늘의 문제
1.restful에 대하여 설명하시오.
'코딩 > 수업 정리' 카테고리의 다른 글
21.02.10 [056] Wed (0) | 2021.02.10 |
---|---|
21.02.09 [055] Tue (0) | 2021.02.08 |
21.02.05 [053] Fri (0) | 2021.02.05 |
21.02.04 [052] Thu (0) | 2021.02.04 |
21.02.03 [051] Wed (0) | 2021.02.03 |
댓글