본문 바로가기
코딩/수업 정리

21.02.08 [054] Mon

by 6^6 2021. 2. 8.
728x90

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툴 설치

http://exerd.com/update

 

 

툴사용법

 

 

 

========================================================================================================================================================

오늘의 문제

1.restful에 대하여 설명하시오. 

728x90

'코딩 > 수업 정리' 카테고리의 다른 글

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

댓글