본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.
Relation은 테이블 간의 관계를 표현한 것을 의미함
1:1 관계 : 사용자 1명은 1개의 사용자 정보를 가질 수 있음
1:N 관계 : 사용자 1명은 여러 개의 게시글을 작성할 수 있음
N:M 관계 : 사용자는 여러 게시물에 좋아요 할 수 있고, 게시물도 여러 명의 사용자에게 좋아요를 받을 수 있음
DB에서 관리하는 Refresh Token을 별도로 발급받아서 Access Token을 발급받기 위한 용도로 사용함
그리고 토큰 발급시 Access Token의 유효 기한을 짧게 설정하고 Refresh Token의 유효기간을 길게 설정해도 탈취되더라도 피해를 최소화 시킴
쿠키를 이용한 방식은 주로 웹 어플리케이션과 같은 브라우저 기반의 환경에 적합함
헤더를 이용한 방식은 API 서비스나 다양한 플랫폼을 지원해야 하는 경우 적합함
인증은 사용자가 인증된 사용자인지 검증하는 작업을 의미. 일반적으로 사이트 로그인이 이에 해당됨
인가는 이미 인증된 사용자가 특정 작업을 수행할 권리가 있는지 검증하는 작업을 의미. 일반적으로 로그인된 사용자만이 게시글을 작성할 수 있는 경우가 이에 해당됨
상당히 많은 코드가 변경되어야 함
데이터베이스 연결, 스키마 정의, 기본적인 DB CRUD 작업 등에서 코드의 변경이 필요함
Class : 객체를 생성하기 위한 설계도, 객체의 데이터와 메서드를 정의
Instance : 클래스로부터 생성된 객체를 의미
클래스의 메서드를 화살표 함수로 구현하지 않고, 일반 함수형태로 구현할 경우 그 안에서 사용하는 this가 정확히 어떤 것을 참조하는지 알 수 없음
그래서 화살표 함수를 통해 선언된 위치의 this를 상속 받아 사용 가능함
Controller : 사용자로부터 받은 데이터의 유효성 검사를 진행하고 데이터를 Service로 전달함
Service : Controller로부터 받은 데이터의 논리적 유효성 검사를 진행하고, 필요한 비즈니스 로직을 수행함. 그리고 DB 접근을 위해 Repository의 메서들를 호출함
Repository : DB 조작(CRUD)
장점 : 각 기능마다 모듈화하기 때문에 코드의 재사용성과 유지 보수성이 높아짐. 그리고 각 계층은 독립적이기에 특정 계층을 변경하기 용이함
단점 : 계층이 분리되어 있기 때문에 구조가 많이 복잡해지고, 그로 인해 초기 설계, 구현 단계에서 시간과 노력이 많이 필요함
에러 처리를 위한 Error 클래스를 정의해서 다양한 에러를 처리함
throw를 통해 발생한 에러에 대한 인스턴스를 만들어서 에러처리 미들웨어로 반환해 에러에 대한 상태와 메세지를 반환함
의존성 주입은 객체가 필요한 의존성을 외부로부터 주입받은 방식을 의미함
단위 테스트와 같은 테스트 진행 시 각 클래스의 결합도를 줄여서 관리에 용이하게 만들기 위해 사용함
장점 : 일종의 문서화 역할을 하고 테스트 코드를 통해 원하는 동작을 하는지 확인해 코드 품질 향상을 도모함
단점 : 많은 시간과 비용이 필요함
GIVEN : 설정 구간, 코드가 동작하기 위한 변수, 결과값 등을 설정하는 구간
WHEN : 실행 구간, 실제 코드를 실행하는 구간
THEN : 테스트 구간, 실행된 코드들을 실제로 테스트 하는 구간
단위 테스트 : 가장 작은 규모의 기능을 테스트 ex) 서비스 단위
통합 테스트 : 다양한 기능을 합쳤을 때 생기는 문제를 방지하기 위한 테스트 ex) 하나의 API 기능
E2E 테스트 : 백엔드부터 사용자에게 보여지는 웹페이지 전체가 원하는 대로 동작하는지 테스트
오늘 시청한 내용은 JavaScript에 대한 소개와 TypeScript에 대한 소개에 대한 내용이 주를 이룸
내일부터 본격적인 TypeScript에 대한 내용을 배울 예정
오전에는 모의 면접을 진행해야 하기에 면접이 끝나고 부터 시청할 예정
지난 숙련, 심화 주차의 개인과제에서 주어진 질문들을 사용
대부분 머리속으로 간략하게 아는 내용들이기 때문에 생각들을 면접에서 사용할 대답으로 정리함