외부활동/JSCODE 서버[Nest] 8

4회차 회원가입, 로그인 기능 추가

학습 목표 JWT에 대한 이해 JWT를 활용한 인증, 인가 구현 로그인, 회원가입 로직 이해 1. 회원가입 기능 회원가입 시 이메일, 패스워드를 받아서, DB에 이메일, 패스워드, 회원 가입 시간을 저장해야 한다. 유저에 대한 정보가 저장될 때, id(PK, primary key)도 같이 Auto-increment 형식으로 저장돼야 한다. 이메일에 반드시 @가 1개만 포함되어 있어야 한다. 이메일에 공백이 포함될 수 없다. 중복된 이메일이 존재할 수 없다. 패스워드에 공백이 포함될 수 없다. 패스워드는 8자 이상 15자 이하여야 한다. (비밀번호는 암호화하지 않고 그대로 저장한다. 암호화하는 건 뒤에서 구현하게 된다.) 2. 로그인 기능 로그인 시 이메일, 패스워드 값을 받는다. 로그인에 성공했을 때, ..

3회차 API 서버 배포[ CORS세팅,에러처리]

학습 목표 환경 변수 분리 CORS 셋팅 예상치 못한 에러에 대한 처리 AWS의 Elastic Beanstalk를 활용한 서비스 배포 ✅ 요구 사항 환경 변수를 분리해라. 로컬 환경, 배포 환경 2가지로 환경 변수를 분리해라. Node.js에서는 .env를 활용해라. Spring Boot에서는 application.yml(또는 application.properties)를 활용해라. CORS를 설정해라. 예상치 못한 에러에 대해, 상태 코드 500과 에러 메시지로 응답하는 전역 예외 처리 설정을 해줘라. Express.js : https://expressjs.com/ko/guide/error-handling.html Nest.js : https://docs.nestjs.com/exception-filter..

2회차 익명 게시판 서비스 [에러 및 부족한 개념 채우기]

1. port: +process.env.PORT 에서 환경 변수 안되는데 질문 process.env.PORT 3306 에서 string 형식은 number형식에 할당할수 없다는에러. => 1. const port = parseInt(process.env.PORT, 10); // 10진수로 파싱하여 숫자로 변환 2. const port = +process.env.PORT; 2. 컨트롤러 구성시 Get이 먼저 나와야 하는 이유 NestJS의 데코레이터(decorator)의 우선순위는 라우팅 매칭과 미들웨어 실행에 영향을 미친다. NestJS는 데코레이터의 우선순위를 기준으로 요청을 올바른 핸들러 함수로 라우팅하고, 미들웨어를 실행한다. 경로 매칭 우선순위: NestJS에서 경로 매칭은 가장 구체적인 경로와 ..

2회차 익명 게시판 서비스 [API문서 Swagger 만들기]

LEVLE 5 협업의 기본, API 문서 만들기! 학습 목표 API 문서 작성 ✅ 요구 사항 아래 API에 대해 API 문서를 작성해라. 게시글 작성 기능 게시글 전체 조회 기능 특정 게시글 조회 기능 특정 게시글 수정 기능 특정 게시글 삭제 기능 게시글 검색 기능 ✅ 제약 조건 Swagger, Github Wiki, Notion, Postman, Gitbook 중 사용하기 API 문서에 아래의 내용은 반드시 포함시키기 URL 주소 / HTTP 메서드 API 설명 요청 형태 Path Parmas Query Params Body Params 필수 여부 데이터 타입 응답 형태 응답 코드(status code) 각 응답 코드별 설명 응답 형태 (response value) 응답 값에서 각 파라미터의 의미 응답..

2회차 익명 게시판 서비스 [유효성 검사, 예외처리]

Level 4 ‘익명 게시판’의 기능 추가 (유효성 검사, 예외 처리) 학습 목표 유효성 검사 예외 처리 ✅ 요구 사항 게시글 작성 기능 게시글 제목, 내용은 필수적으로 포함해야 한다. 제목은 1글자 이상 15글자 이하여야 한다. 내용은 1글자 이상 1000글자 이하여야 한다. 제목은 공백으로만 이루어질 수는 없다. 특정 게시글 조회 기능 게시글의 id(PK, primary key)로 특정 게시글을 조회했을 때, 존재하지 않는 게시글일 경우 에러 메시지로 응답하기 특정 게시글 수정 기능 게시글 작성할 때의 유효성 검사 조건과 동일하게 가져가야 한다. 특정 게시글 삭제 기능 게시글의 id(PK, primary key)로 특정 게시글을 삭제하기 위해 조회했을 때, 존재하지 않는 게시글일 경우 에러 메시지로 ..

2회차 익명 게시판 서비스 [정렬, 검색, 개수제한]

Level 3 익명 게시판’의 기능 추가 (정렬, 검색, 개수 제한) 학습 목표 정렬 기능 검색 기능 데이터 조회 시 limit 걸기 createdAt 컬럼 배우기 ✅ 요구 사항 게시글 작성 기능 게시글에 생성 시간도 같이 저장한다. 게시글 전체 조회 기능 게시글을 조회할 때 생성 시간의 값도 포함돼야 한다. 최근에 작성된 순으로 게시글이 조회되어야 한다. 데이터 조회 개수는 최대 100개까지만 할 수 있어야 한다. 특정 게시글 조회 기능 게시글을 조회할 때 생성 시간의 값도 포함돼야 한다. 특정 게시글 수정 기능 (추가 요구사항 없음) 특정 게시글 삭제 기능 (추가 요구사항 없음) 게시글 검색 기능 검색 키워드로 게시글을 검색할 수 있어야 한다. 검색 키워드가 포함된 제목을 가진 게시글을 전부 조회한다..

2회차 익명 게시판 서비스 [데이터 베이스 및 ORM 세팅 및 CRUD ]

Level 2 이번 레벨 부터 본격적으로 서비스 개발을 시작한다. 학습 목표 URL, Http Method를 활용한 기본 라우팅 방법 학습 Request Body, Query Params, Path Params 사용해보기 ORM 사용 엔티티(테이블) 생성 기본적인 CRUD 활용 요청부터 응답까지 전체 과정 경험 REST API 설계 HTTP Status Code (상태 코드) Postman 사용법 요구 사항 게시글 작성 기능 게시글은 제목, 내용을 포함한다. 게시글이 저장될 때, id(PK, primary key)도 같이 Auto-increment 형식으로 저장돼야 한다. 게시글 작성에 성공했을 때, 응답값으로 작성된 게시글에 대한 정보를 보여주어야 한다. 게시글 전체 조회 기능 게시글을 조회할 때 id..

1회차 NestJS 환경세팅 및 Github세팅

1회차에는 큰 두개의 목표가 있다. 첫번째는 NESTJS 프로젝트 환경 세팅이고 두번째는 Github 셋팅이다. 프로젝트 환경 세팅은 Visual Studio Code IDE세팅을 한 후 NEST CLI를 사용해서 NEST프로젝트를 생성하고 데이터베이스를 세팅해야한다. 그 후 Github Organization 초대 받았는 지 확인을 하고 JSCODE organization에 자신만의 repository를 만들면 된다. 생성한 레포지토리에서는 아래와 같은 4개의 미션을 수행하면 된다. 1. 커밋 컨변션을 지켜서 initial commit, push 하기 2. main 브랜치에서 develop 브랜치를 생성하고 commit, push하기 3. PR(Pull Request) 요청하기 4. 리뷰할 팀원의 PR..