website URL: http://ksbfirst.shop
github: https://github.com/SeongBeomKo/myblog
로그인 기능 없이 접속자가 글을 남길 수 있고 포스트된 글은 24시간동안만 유지된다. CRUD 기능 중 Create, Read만 구현했고 로그인 기능이 없기 때문에 Update와 Delete는 구현하지 않았다.
backend
Spring Boot
Java
AWS
MySql
Frontend
HTML, CSS
Jquery
게시글 조회 페이지
로 이동하기전체 게시글 목록 조회 페이지
로 이동하고, 최신 게시글이 최상단에 위치함을 확인하기상세페이지를 나누는 방법이 제공된 강의 자료에 없었다.
Flask framework에서는 render_template() 함수를 이용해서 원하는 페이지로 이동 시키고 Jinja2로 데이터를 쉽게 넘길 수 있었는데 Spring에서는 비슷한 기능을 어떻게 구현하는지 참고 자료가 제공 되지 않아서 구글링이 필요했다.
총 두가지 개념을 알아야 했다.
model과 view를 동시에 설정이 가능하며 콘트롤러는 ModelAndView객체만 리턴하지만 Model과 View가 모두 리턴가능하다. addObject() 함수를 사용하여 모델의 데이터를 객체에 포함 시킨다.
Model 인터페이스의 addAttribute method를 통해 key / value 형태로 값을 임시로 저장한다. Controller는 Model에 데이터를 저장하고 View Name을 Return 하면서 View로 넘어간다. 이때 View는 Model에 저장된 Data를 참고하여 결과를 화면에 보여준다. 이러한 과정을 Web MVC Framework에서 Model과 View 둘다 저장할 수 있게 해주어서 Model 객체를 인자로 사용하지 않고 내부에서 ModelAndView 객체를 생성해서 사용한다. 또한 ModelAndView 객체에서 Attribute를 정의하며, 리턴할 View Name까지 모두 정의하기 때문에 더욱 간편해졌다.
뷰 템플릿 엔진으로, 컨트롤러가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 해준다.
html 태그를 기반으로 하여 동적인 View를 제공한다.
th:속성을 이용하여 데이터를 바인딩한다.
@Controller + @ResponseBody = @RestController
전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다.
@ResponseBody는 자바객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트로 전송합니다.(JSON으로 Request했으면 JSON으로 변환하여 보내준다는거 같음)
@RestController는 리턴값에 자동으로 @ResponseBody가 붙게되어 별도 어노테이션을 명시해주지 않아도 HTTP 응답데이터에 자바객체가 매핑되어 전달됩니다.
@Controller와 @RestController의 주요 차이점 중 하나는 @RestController을 표시하면 모든 메소드가 뷰 대신 객체로 작성됩니다.
Restful 웹서비스를 만드는 경우에는 @RestController를 사용하는 것이 좋다.
Restful 웹서비스란?
REST(Representational State Transfer)란 분산시스템 설계를 위한 아키텍쳐 스타일에 맞는 웹서비스들 말한다.
Rest의 원칙
리소스는 URI를 통해 쉽게 이해될수 있도록 표현해야한다.
Json 혹은 XML을 전송하여 데이터 객체나 속성을 나타내야 한다.
메세지는 HTTP method를 이용하여 명시적으로 표현해야한다. (CRUD조작을 HTTP요청에 매핑)
Stateless 상호작용이란 각 요청 간 클라이언트의 context가 서버에 저장되지 않습니다.
하루만에 스프링을 이용해서 간단히 API를 구현해보는 프로젝트였다. 다음주에 조금 더 심화 과정을 배워서 더 재미있는 프로젝트를 하고 싶다.