Github Repo https://github.com/wanted-wecode-subjects/redbrick-subject 개요 회원, 프로젝트, 게임 API 만들기 기간 2021.11.08 - 2021.11.10 개발 환경 TypeScript NestJS Sqlite3 사용 라이브러리 bcrypt passport typeorm class-validator passport-jwt cache-manager schedule 구현 사항 요구사항 회원 기능 게임 게임 또는 사용자로 게임 검색 조회수, 좋아요 기능 구현 프로젝트(제작 중인 게임을 의미) 프로젝트의 실시간 반영 (예를 들어, 프로젝트 수정 중 비정상적으로 사이트가 종료되어도 작업 내용이 보존되어야 함) 프로젝트 당 퍼블리싱 할 수 있는 게임은 ..
Github Repo https://github.com/wanted-wecode-subjects/freshcode-subject 개요 회원, 상품 API 만들기 기간 2021.11.04 - 2021.11.06 개발 환경 TypeScript NestJS Sqlite3 사용 라이브러리 bcrypt passport typeorm class-validator 구현 사항 요구사항 회원가입 로그인 JWT 사용 Request시 Header에 Authorization 체크 토큰 없으면 에러 처리 상품 CRUD 상품 추가/수정/삭제는 관리자(admin 권한)만 가능 사용자(user 권한)는 상품 조회만 가능 상품 하나 조회 상품 전체 조회 페이지네이션(페이지당 5개) 에러 핸들링 ERD ERD(Entity-Relatio..
Github Repo https://github.com/wanted-wecode-subjects/aimmo-subject-teamB 개요 회원, 게시글, 댓글 API 만들기 개발 기간 2021.11.01 - 2011.11.03 개발 환경 TypeScript NestJS MongoDB 사용 라이브러리 bcrypt passport mongoose class-validator 구현 사항 회원 로그인 구현 게시글 CRUD 게시글 pagination 게시글 조회수 카운트 게시글 검색 게시글 카테고리 댓글 CRUD 대댓글(depth: 1) 대댓글 pagination 대댓글 MongoDB self ref을 사용하여 대댓글을 구현하였습니다. 댓글의 schema는 다음과 같습니다. Comment { content: st..
3) 파일 다운로드 구현하기 실습 파일이 업로드되면 파일 정보는 데이터베이스 등에 저장을 하도록 합니다. 그리고 나중에 다운로드 할 때는 저장된 파일의 정보를 찾을 수 있는 id 등을 Controller에서 받게 한 뒤 해당 정보를 이용하여 데이터베이스에서 파일 정보를 읽어들이도록 해야 합니다. 읽어들인 파일 정보 response의 setHeader() 메서드를 이용해서 파일명, 파일 타입, 파일의 길이 이런 정보들을 지정을 하고 브라우저가 캐시를 읽지 못하도록 no-cache 로 설정한 뒤 헤더 정보로 전송을 하게 합니다. 그리고 이 response로부터 HttpServlet Response에 OutputStream을 이용해서 읽어들인 내용의 파일을 출력하게 하는 겁니다. 아래 예제에서는 경로를 직접 ..