Node.js рдФрд░ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде REST API рдмрдирд╛рдирд╛

рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рд▓реЗрдЦ " рдЕрдиреБрд╡рд╛рдж рдПрдХ рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛: рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореВрд▓ рдмрд╛рддреЗрдВ" рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред

рднрд╛рдЧ 1. рдПрдХ рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ рдмрдирд╛рдирд╛: рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореВрд▓ рдмрд╛рддреЗрдВ


рд╡реЗрдм рд╕рд░реНрд╡рд░ REST API рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдЖрдк рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдХрд░ рдЕрдкрдиреА REST API рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рдЖрдк рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдкреНрд▓рдЧ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдП рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПред

рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдб рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдорд╛рдпреЛрдЬрд┐рдд рдФрд░ рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

cd ~ mkdir hr_app cd hr_app/ touch index.js mkdir config touch config/web-server.js mkdir controllers mkdir db_apis mkdir services touch services/web-server.js 

Index.js рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ "рдореБрдЦреНрдп" рдлрд╝рд╛рдЗрд▓ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд╡реЗрдм рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред config рдФрд░ рд╕реЗрд╡рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВред

рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ Home> hr_app> config> web-server.js

 module.exports = { port: process.env.HTTP_PORT || 3000 }; 

Node.js рдореЗрдВ, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдПрдирд╡реА рдЧреБрдг рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ HTTP_PORT рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдкреЛрд░реНрдЯ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 3000 рд╣реИред

рдирд┐рдореНрди рдХреЛрдб рдХреЛ рд╣реЛрдо> hr_app> рд╕реЗрд╡рд╛рдУрдВ> рд╡реЗрдм-server.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ

 const http = require('http'); const express = require('express'); const webServerConfig = require('../config/web-server.js'); let httpServer; function initialize() { return new Promise((resolve, reject) => { const app = express(); httpServer = http.createServer(app); app.get('/', (req, res) => { res.end('Hello World!'); }); httpServer.listen(webServerConfig.port) .on('listening', () => { console.log(`Web server listening on localhost:${webServerConfig.port}`); resolve(); }) .on('error', err => { reject(err); }); }); } module.exports.initialize = initialize; 

рд▓рд╛рдЗрдиреЛрдВ 1-3: рдХрдИ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Http рдореЙрдбреНрдпреВрд▓ рдХреЛ Node.js рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЛ npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд▓рд╛рдЗрдиреНрд╕ 7-27: рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╛рдо рдХрд╛ рдПрдХ рдлрдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рддреБрд░рдВрдд рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд▓рд╛рдЗрдиреЗрдВ 9-10: рдПрдХ рдирдпрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ) рдФрд░ рдлрд┐рд░ http рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ http рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд╛рдЗрдиреЗрдВ 12-14: рдЖрд╡реЗрджрди рдХрд╛ рддрд░реАрдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдкрде (/) рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣ "рдирдорд╕реНрддреЗ" (рд░реЗрд╕) рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" рдЧреНрд░рд╛рд╣рдХ рдХреЛред

рд▓рд╛рдЗрдиреНрд╕ 16-24: рд╕рд░реНрд╡рд░ рд▓рд┐рд╕рдирд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд╛рдЗрди 28: рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ

рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рд╣реЛрдо> hr_app> index.js

 const webServer = require('./services/web-server.js'); async function startup() { console.log('Starting application'); try { console.log('Initializing web server module'); await webServer.initialize(); } catch (err) { console.error(err); process.exit(1); // Non-zero failure code } } startup(); 

рд╣рдо рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдФрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ async / рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдХреЛрд╢рд┐рд╢-рдкрдХрдбрд╝ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдлрд╝рдВрдХреНрд╢рди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛; рдЕрдиреНрдпрдерд╛, рдХреЛрдИ рднреА рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЛ рдмрд╕ рдЕрдм npm рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЛ рдЗрдирд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИ - рдлрд┐рд░ рдЖрдк рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Hr_app рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдХрд┐рд╕реА рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдБред

 npm init -y npm install express -s node . 

Npm init рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ package.json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ npm рдПрдХ рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ (-y рдзреНрд╡рдЬ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред Npm рдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╕ (-s рдлреНрд▓реИрдЧ рдХреЛ рдкреИрдХреЗрдЬ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Npm рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдиреЛрдб_рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдкреЗрдбрд╝ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП package.lock.json рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИ: 3000? рдмрдзрд╛рдИ рд╣реЛ, рдЖрдкрдиреЗ рдПрдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рдмрдирд╛рдпрд╛ рд╣реИ!

рдФрд░ рдпрд╣рд╛рдБ рд╡рд╣ рд╣реИ, рдПрдХ рдФрд░ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб"ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдордЬрд╝реЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИред

рдЬрдм рдЖрдк рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЯрд░реНрдорд┐рдирд▓ рдкрд░ рд▓реМрдЯрдХрд░ рдФрд░ ctrl + c рджрдмрд╛рдХрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдирд┐рдпрдВрддреНрд░рд┐рдд рд╢рдЯрдбрд╛рдЙрди


Ctrl + C рджрдмрд╛рдХрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖред рд╢рдЯрдбрд╛рдЙрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ Node.js. рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдирд┐рдореНрди рдХреЛрдб рдХреЛ рд╣реЛрдо> hr_app> рд╕реЗрд╡рд╛рдУрдВ> рд╡реЗрдм-server.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ

 // *** previous code above this line *** function close() { return new Promise((resolve, reject) => { httpServer.close((err) => { if (err) { reject(err); return; } resolve(); }); }); } module.exports.close = close; 

рдХрд░реАрдмреА рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╡рд╛рджрд╛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╣рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред HttpServer.close рдкрджреНрдзрддрд┐ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд░реЛрдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдХрд┐рддрдиреЗ рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓реЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдХреЙрд▓рдмреИрдХ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рддрдХ рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдЖрдк рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдЦреБрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП http-shutdown рдЬреИрд╕реЗ рдХрд╕реНрдЯрдо рдХреЛрдб рдпрд╛ npm рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рд╣реЛрдо> hr_app> index.js

 // *** previous code above this line *** async function shutdown(e) { let err = e; console.log('Shutting down'); try { console.log('Closing web server module'); await webServer.close(); } catch (e) { console.log('Encountered error', e); err = err || e; } console.log('Exiting process'); if (err) { process.exit(1); // Non-zero failure code } else { process.exit(0); } } process.on('SIGTERM', () => { console.log('Received SIGTERM'); shutdown(); }); process.on('SIGINT', () => { console.log('Received SIGINT'); shutdown(); }); process.on('uncaughtException', err => { console.log('Uncaught exception'); console.error(err); shutdown(err); }); 

SIGINT рдФрд░ SIGTERM рдИрд╡реЗрдВрдЯ рд╕рд┐рдЧреНрдирд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм ctrl + c рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрдХ рдЕрдирдХреНрд░реЗрдбрд┐рд╕реЗрдкреНрд╢рди рдИрд╡реЗрдВрдЯ рдШрдЯрд┐рдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЯреНрд░рд╛рдЗ-рдХреИрдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЬрдм рдЖрдк рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ "рд╢рдЯрдбрд╛рдЙрди" рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рд░реНрд╡рд░ рдкрд░ рдкрдВрдЬреАрдХрд░рдг


рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ: HTTP рд▓реЙрдЧрд┐рдВрдЧред рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬреЛ рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЙрдЧрд┐рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЙрд░реНрдЧрди рд╕рд░рд▓ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЪрд▓реЛ npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрд░реНрдЧрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

 npm install morgan -s 

рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реЗрд╡рд╛рдУрдВ / рд╡реЗрдм-server.js рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╕ (рдкрдВрдХреНрддрд┐ 2) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

 const morgan = require('morgan'); 

рдЕрдм рдЖрдк рдореЙрд░реНрдЧрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ app.use рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред App.get рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

 // Combines logging info from request and response app.use(morgan('combined')); // *** app.get call below this line *** 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ app.use рдордзреНрдпрд╡рд░реНрдЧреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдорд┐рдбрд▓рд╡реЗрдпрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рдХреНрд╖рдо рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЗрдЦ рд╕рдХреЗрдВред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореЙрд░реНрдЧрди рд▓реЙрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ STDOUT (рдЬреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ) рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред

рдирд┐рдореНрди рдЖрд▓реЗрдЦ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рд╕рд╣рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛, рдЬреЛ рдЖрдкрдХреЛ рдиреЛрдбреНрд╕ .js. рдХреЗ рд▓рд┐рдП REST API рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред

Source: https://habr.com/ru/post/hi473234/


All Articles