API 여행
Tours API는 사용자에게 투어 관리를위한 포괄적 인 기능을 제공하도록 설계된 강력한 RESTFUL 인터페이스입니다. 사용자는 사용 가능한 투어보기, Stripe Payment Gateway를 통해 예약, 완료 후 투어 등급, 필터, 페이지 매김 및 정렬 메커니즘을 포함한 다양한 기능에 액세스 할 수 있습니다. API는 사용자 계정 생성 및 관리, 투어 추가 및 편집 및 검토 관리와 같은 추가 기능을 지원합니다. 특히, 구현에는 레이디스 캐싱이 통합되어 대기 시간과 속도를 최적화합니다. 강력한 암호화, 압축 기술 및 속도 제한을 통해 보안 조치가 높아집니다. 또한이 프로젝트는 NodeMailer (Sendgrid)를 사용하여 전자 메일 통신을위한 유틸리티 방법을 통합하고 Cloudinal 또는 ImageKit과 같은 외부 스토리지 솔루션에 파일 업로드를 용이하게합니다.
- 전체 프로젝트는 렌더에 배치되어 있으며 여기에서 액세스 할 수 있습니다.
- 참고 : API는 현재 무료 렌더 플랜에서 호스팅되며 처음으로로드하는 데 몇 초가 걸릴 수 있습니다.
주요 기능 -
- 기능 :보기 및 예약 투어, 완료된 투어, 필터 및 정렬 투어, 사용자 계정 관리 및 리뷰 관리.
- 성능 최적화 : Redis 캐싱은 대기 시간과 속도를 향상시키기 위해 사용됩니다.
- 보안 조치 : 강력한 암호화, 압축 및 속도 제한 메커니즘이 구현됩니다.
- 타사 통합 : 결제 처리에 Stripe를 활용, 전자 메일 커뮤니케이션을위한 NodeMailer (SendInblue), 외부 파일 스토리지 용 Cloudinary/ImageKit을 사용합니다.
- 포괄적 인 기능 : 페이지 매김, 정렬 및 필터링 투어 관련 운영을 지원합니다.
목차
- 전제 조건
- 설치
- 용법
- API 문서
- 구축
- 직면 한 어려움
- 미래의 범위
- 특허
전제 조건
- 시스템에 Node.js가 설치되어 있어야합니다. 그렇지 않은 경우 여기에서 설치할 수 있습니다.
- MongoDB Atlas 계정이 있어야합니다. 그렇지 않다면 여기에서 하나를 만들 수 있습니다.
- 스트라이프 계정이 있어야합니다. 그렇지 않다면 여기에서 하나를 만들 수 있습니다.
- SendInblue 계정이 있어야합니다. 그렇지 않다면 여기에서 하나를 만들 수 있습니다.
- ImageKit 계정이 있어야합니다. 그렇지 않다면 여기에서 하나를 만들 수 있습니다.
- 테스트를 위해 vscode에서 사용 가능한 우체부 또는 불면증 또는 Thunderclient Extension을 사용할 수 있습니다.
- 캐싱의 경우 Redis 계정이 있어야합니다. 이 프로젝트에서는 Render.com의 Redis를 사용합니다. 그렇지 않다면 여기에서 하나를 만들 수 있습니다.
설치
- 저장소를 복제하십시오
git clone https://github.com/varshil-shah/tours-api.git
- NPM 패키지를 설치하십시오
npm install or yarn install
- .env.example 파일과 동일한 루트 디렉토리에서 .env 파일을 작성하고 환경 변수를 추가하십시오.
- 응용 프로그램을 실행하십시오
용법
- 투어, 사용자, 리뷰 및 예약을 작성, 읽기, 업데이트 및 삭제하는 데 도움이됩니다.
- 여행 및 기타 모델을 필터링, 정렬 및 페이지 분류 할 수있는 기능을 제공합니다.
- API를 모든 프론트 엔드 애플리케이션에 통합하고 API를 사용하여 완전히 기능적인 투어 웹 사이트를 만듭니다.
- 사용자, 여행, 리뷰 및 예약을 쉽게 관리하십시오.
구축
- node.js -node.js®는 Chrome의 V8 JavaScript 엔진을 구축 한 JavaScript 런타임입니다.
- Express.js- Node.js를위한 빠르고, 비회화되지 않은 미니멀리스트 웹 프레임 워크.
- MongoDB -MongoDB는 현대 애플리케이션 개발자와 클라우드 시대를 위해 구축 된 범용, 문서 기반, 분산 데이터베이스입니다.
- Mongoose- node.js에 대한 우아한 몽고 브 객체 모델링
- REDIS -REDIS는 오픈 소스 (BSD 라이센스), 메모리 내 데이터 구조 저장소이며 데이터베이스, 캐시 및 메시지 중개인으로 사용됩니다.
- JWT -JSON Web Tokens는 두 당사자 간의 주장을 단단히 대표하는 개방형 업계 표준 RFC 7519 방법입니다.
직면 한 어려움
- 프로젝트의 가장 어려운 부분은 파일 업로드 기능을 구현하는 것이 었습니다. 파일을 서버에 업로드하는 방법을 이해하려면 ImageKit의 문서를 살펴 봐야했습니다. 또한 파일을 로컬 서버에 업로드하는 방법을 이해하려면 Multer와 Sharp의 문서를 살펴 봐야했습니다.
- 프로젝트의 두 번째로 어려운 부분은 결제 기능을 구현하는 것이 었습니다. 응용 프로그램에서 결제 기능을 구현하는 방법을 이해하기 위해 Stripe의 문서를 살펴 봐야했습니다.
- 프로젝트의 세 번째로 어려운 부분은 필터링, 정렬 및 페이지 매김 기능을 구현하는 것이 었습니다. 응용 프로그램에서 필터링, 정렬 및 페이지 매김 기능을 구현하는 방법을 이해하기 위해 Mongoose의 문서를 살펴보아야했습니다.
미래의 범위
- API에 프론트 엔드 애플리케이션을 추가하십시오.
- 더 나은 보안을 위해 액세스 및 새로 고침 토큰을 구현하십시오.
- 최대 로그인 시도 및 잠금 메커니즘을 구현하십시오.
- 위치별로 검색 투어에 기능을 추가하십시오.
특허
MIT 라이센스
감사의 말
Node.js, Express.js, Mongodb 및 Mongoose의 놀라운 코스에 대한 Jonas Schmedtmann에게 감사드립니다.