Skip to content

πŸ’‘ Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Β«API Π½Π° Node.js, Express.js ΠΈ MongoDBΒ»

License

Notifications You must be signed in to change notification settings

iwebexpert/js-junior-nodejs-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

πŸ’‘ Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Β«API Π½Π° Node.js, Express.js ΠΈ MongoDBΒ»

GitHub language count GitHub top language GitHub code size in bytes GitHub issues GitHub pull requests GitHub closed pull requests GitHub last commit

Для создания API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Express.js. Π’ качСствС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Π±Ρ€Π°Π½Π° MongoDB. ВзаимодСйствиС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Mongoose ORM.

πŸ”§ Настройка ΠΏΠ΅Ρ€Π΅Π΄ запуском

ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» .env.example Π² .env.

  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния JWT_SIFN_KEY (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ JWT);
  • Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния MONGO_DB_URL Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… MongoDB.

Docker для MongoDB

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ docker-compose.yml для создания ΠΈ запуска Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с MongoDB.

  • Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конфигурация ΠΈΠ· docker-compose.yml Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния MONGO_DB_URL Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² mongodb://root:1234@localhost:27017/app?authSource=admin.

Запуск прилоТСния

npm start

Запуск прилоТСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ npm ΠΏΠ°ΠΊΠ΅Ρ‚ nodemon.

npm run dev

Запуск прилоТСния Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

npm run debug # Linux, MacOS
npm run debug-win # Windows

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ осущСствляСтся двумя способами:

  • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ middleware ./middleware/authMiddleware.js;
  • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Passport.js (стратСгия passport-jwt).

Π’Π°ΠΊΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ app.js, Π²Ρ‹Π±Ρ€Π°Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

app.use('/api/projects', passport.authenticate('jwt', { session: false }), routerProjects); // Passport.js
// app.use('/api/projects', authMiddleware, routerProjects); // ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ middleware
// app.use('/api/projects', routerProjects); // Π‘Π΅Π· Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π€ΠΎΡ€ΠΌΡ‹ рСгистрации ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π€ΠΎΡ€ΠΌΠ° рСгистрации

Π€ΠΎΡ€ΠΌΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

ВСстированиС API

Для тСстирования API установитС Postman ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° tests/postman-collection.json.

Π’Π°ΠΊΠΆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» tests/postman-data-file.json ΠΏΡ€ΠΈ запускС тСстов Ρ‡Π΅Ρ€Π΅Π· Collection Runner. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π΅ влияСт Π½Π° ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ тСстов. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

Код Π²Π΅Π±-прилоТСния написан с использованиСм

NodeJS Express.js HTML5 CSS3 Docker MongoDB Postman Visual Studio Code

ЛицСнзия

GitHub

About

πŸ’‘ Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Β«API Π½Π° Node.js, Express.js ΠΈ MongoDBΒ»

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published