Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 18 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
{
"name": "@skypro-web-developer/backend-02-template",
"name": "backend-homework",
"version": "1.0.0",
"description": "Шаблон для выполнения второго домашнего задания",
"private": true,
"main": "src/index.js",
"description": "backend practice",
"main": "index.js",
"scripts": {
"dev": "",
"start": ""
"start": "node src/index.js",
"dev": "nodemon src/index.js"
},
"author": ""
"repository": {
"type": "git",
"url": "git+ssh://[email protected]/dimych1978/backend.git"
},
"author": "Dmitrii Bashkatov",
"license": "ISC",
"bugs": {
"url": "https://github.com/dimych1978/backend/issues"
},
"homepage": "https://github.com/dimych1978/backend#readme",
"devDependencies": {
"nodemon": "^3.1.7"
}
}
8 changes: 6 additions & 2 deletions src/data/users.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
[
{
"id": 1,
"name": "Ivan"
"name": "Dmitrii"
},
{
"id": 2,
"name": "John"
"name": "Marina"
},
{
"id": 3,
"name": "Mikhail"
}
]
52 changes: 46 additions & 6 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,52 @@
const http = require('http');
const getUsers = require('./modules/getUsers');

const address = 'http://127.0.0.1';
const port = 3003;
const server = http.createServer((request, response) => {
const url = new URL(request.url, address);
const isHello = url.searchParams.has('hello');
const hello = url.searchParams.get('hello');
const users = url.searchParams.has('users');

// Написать обработчик запроса:
// - Ответом на запрос `?hello=<name>` должна быть **строка** "Hello, <name>.", код ответа 200
// - Если параметр `hello` указан, но не передано `<name>`, то ответ **строка** "Enter a name", код ответа 400
// - Ответом на запрос `?users` должен быть **JSON** с содержимым файла `data/users.json`, код ответа 200
// - Если никакие параметры не переданы, то ответ **строка** "Hello, World!", код ответа 200
// - Если переданы какие-либо другие параметры, то пустой ответ, код ответа 500
if (isHello) {
if (hello === '') {
response.statusCode = 400;
response.statusMessage = 'Bad request';
response.header = 'Content-Type: text/plain';
response.write('Enter a name');
response.end();
return;
}
response.statusCode = 200;
response.statusMessage = 'OK';
response.header = 'Content-Type: text/plain';
response.write(`Hello, ${hello}`);
response.end();
}
if (users) {
response.statusCode = 200;
response.statusMessage = 'OK';
response.header = 'Content-Type: application/json';
response.write(getUsers());
response.end();
return;
}
if (url.searchParams.size > 0) {
response.statusCode = 500;
response.statusMessage = '';
response.header = 'Content-Type: text/plain';
response.end('Server error (empty answer)');
return;
}
response.statusCode = 200;
response.statusMessage = 'OK';
response.header = 'Content-Type: text/plain';
response.write('Hello, world');
response.end();
return;
});

server.listen(port, () => {
console.log(`Сервер запущен на адресе ${address}:${port}, (порт ${[port]})`);
});
9 changes: 9 additions & 0 deletions src/modules/getUsers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const fs = require('fs');
const path = require('path');

const users = () => {
const filePath = path.join(__dirname, '../data/users.json');
return fs.readFileSync(filePath);
};

module.exports = users;
Empty file removed src/modules/users.js
Empty file.