본문 바로가기

내일배움캠프 4기 스프링/프로젝트📙

~12. 19까지 중간 프로젝트 전 개인 과제 리뷰 및 개선할 점 정리

728x90

ui - server - database

 

server - database가 백엔드

server - controller, service, repository를 포함한다

 

3tier - ur, application, db

 

server의 3계층

controller : ui

server : service

repository : db

 

controller

인증/인가 : 서버의 리소스를 사용하기 위한 요청/권한 부여를 컨트롤러에서 처리한다

인증/인가의 방식 - 세션, 쿠키, JWT

왜 controller일까? 인증/인가는 일종의 필터로 기능한다. 권한 부여된 사용자만 서비스에 접근 가능하다는 개념

 

1. controller vs restcontroller ->  MVC view controller

 

2. 컨트롤러에서 인증/ 인가 처리하기! -> service에 HttpServletRequest request

-> 새로운 기술 : 그래프QL, 웹 플럭스 등의 대체가 일어났을 때, 영향을 받는 코드 전부 다 고쳐야한다!

~ 스코프를 최소화해야 한다.

DTO로 반환하는 이유도 같은 논리

 

3. bearer token 은 나를 증명한다는 뜻으로 우선 이해하기

+ 스프링 시큐리티

토큰은 곧 사용자 정보

validateToken 메서드는 db에서 사용자정보를 확인하는 것과 같은 개념

~ 컨트롤러에서 토큰 유효성 검사를 수행하기 작성하기

 

4. 권한 : @ResponseStatus(HttpStatus.Forbidden)

http 401, 403의 차이!

400은 요청이 잘못되었을 때의 범주

**500 에러는 서버 개발자의 잘못일 가능성이 높다

 

5. ResponseEntity<String> 타입 : header, httpstatus를 설정할수 있다.

 

6. Post 엔티티를 보다 적극적으로 활용할 것

 

7. Post - User 간 연관관계 설정하기

양방향은? @OneToMany일 때 필요(@ManyToOne일때는 꼭 필요한 것은 아니다) ~ 케바케

 

 

 

 

 

 

 

 

 

728x90