Buckets:
| const express = require('express'); | |
| const app = express(); | |
| const PORT = 3000; | |
| // Middleware для парсинга JSON | |
| app.use(express.json()); | |
| app.use(express.urlencoded({ extended: true })); | |
| // Логгер всех запросов | |
| app.use((req, res, next) => { | |
| console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`); | |
| next(); | |
| }); | |
| // Простой GET эндпоинт | |
| app.get('/', (req, res) => { | |
| res.json({ | |
| message: 'Express сервер работает!', | |
| status: 'active', | |
| port: PORT, | |
| timestamp: new Date().toISOString() | |
| }); | |
| }); | |
| // GET с параметрами | |
| app.get('/api/users/:id', (req, res) => { | |
| const userId = req.params.id; | |
| res.json({ | |
| user: { | |
| id: userId, | |
| name: `User ${userId}`, | |
| email: `user${userId}@example.com` | |
| }, | |
| message: 'User found' | |
| }); | |
| }); | |
| // POST эндпоинт | |
| app.post('/api/data', (req, res) => { | |
| const { name, value } = req.body; | |
| console.log('Получены данные:', { name, value }); | |
| res.json({ | |
| received: true, | |
| data: { name, value }, | |
| timestamp: new Date().toISOString() | |
| }); | |
| }); | |
| // Эндпоинт для проверки здоровья сервера | |
| app.get('/health', (req, res) => { | |
| res.status(200).json({ | |
| status: 'OK', | |
| uptime: process.uptime(), | |
| memory: process.memoryUsage(), | |
| node_version: process.version | |
| }); | |
| }); | |
| // Обработка 404 | |
| app.use((req, res) => { | |
| res.status(404).json({ | |
| error: 'Route not found', | |
| path: req.url | |
| }); | |
| }); | |
| // Обработка ошибок | |
| app.use((err, req, res, next) => { | |
| console.error('Ошибка:', err.stack); | |
| res.status(500).json({ | |
| error: 'Internal server error', | |
| message: err.message | |
| }); | |
| }); | |
| // Запуск сервера на 0.0.0.0 (важно для контейнеров) | |
| app.listen(PORT, '0.0.0.0', () => { | |
| console.log(`🚀 Express сервер запущен!`); | |
| console.log(`📍 Локально: http://localhost:${PORT}`); | |
| console.log(`📍 Для внешнего доступа: http://0.0.0.0:${PORT}`); | |
| console.log(`✅ Сервер готов принимать запросы`); | |
| console.log(`📊 Health check: http://localhost:${PORT}/health`); | |
| }); | |
| // Обработка сигналов завершения | |
| process.on('SIGINT', () => { | |
| console.log('\n🛑 Сервер остановлен пользователем'); | |
| process.exit(0); | |
| }); | |
| process.on('SIGTERM', () => { | |
| console.log('\n🛑 Сервер остановлен системой'); | |
| process.exit(0); | |
| }); |
Xet Storage Details
- Size:
- 2.7 kB
- Xet hash:
- c4374294745e99060b4b6ee7d8cad74bdbecd712a93dc02a7f0d1f75a4e7d223
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.