1주차 프로젝트를 완성하고 2주차 프로젝트까지 완성하였지만, 여전히 Spring Framework를 이해하기가 어려웠다.
Spring Framework, JPA, java를 공부하기 위해 1주차 프로젝트의 코드리뷰를 one by one 진행하였다.
코드리뷰를 진행하며 공부한 내용을 아래와 같이 적어본다:
URI (Uniform Resource Identifier) - 통합 자원 식별자 / Resource란 URI로 식별이 가능한 모든 종류의 자원 (웹 브라우저 파일 및 그 이외의 리소스 포함)을 지칭. URI는 즉, 자원 자체를 식별하는 고유한 문자열 sequence
@RequestParam과 @PathVariable은 http의 비연결성을 극복하고 데이터를 전달하기 위한 annotation 중 하나로, uri를 통해 전달된 값을 파라미터로 받아오는 역할
http://localhost:8000/board?page=1&listSize=10 (@RequestParam)
http://localhost:8000/board/1 (@PathVariable)
@PathVariable - {변수}와 동일한 이름을 갖는 파라미터 (예시 - PutMapping이나 DeleteMapping의 경우 "/api/baords/{id}"에서 {id}와 매칭시키기 위함)
비동기통신을 하기위해서는 client에서 서버로 요청 msg 보낼 때, 본문에 데이터를 담아서 보내고 / 서버에서 client로 응답 보낼 때도 vice-versa. 본문 = Body
@RequestBody - 요청본문 (해당 annotation이 붙은 파라미터에는 http요청의 본문이 그대로 전달된다) - 즉, input 값이 그대로 전달됨
@ResponseBody - 응답본문 (해당 annotation이 붙은 파라미터에는 자바객체를 http요청의 바디내용으로 매핑하여 클라이언트로 전송한다
BoardRequestDto는 사용자(client)가 input한 데이터를 넣어두는 컨테이너라고 생각된다. DTO는 Data Transfer Object로 즉 데이터를 옮긴다. 즉, RequestDto는 user input을 transfer 하기 위해 존재이다.
과정
Presentation Layer -> (user input) -> BoardRequestDto -> (transferring) -> create or update Board Entity