В PHP часть веб-сервера обычно реализуется какой-то другой платформой, и ваши PHP сценарии вызываются этой платформой. Например, модуль Apache может назвать ваш входящий веб-запрос сценария blah.php
для /blah.php
. Это означает, что PHP разработчики часто думают в терминах браузера, вызывающего файл PHP, но на самом деле это сложнее, чем закулисное.
Типичная настройка Node.js, напротив, заключается в том, что JavaScript сам код реализует слушатель веб-сервера. Вы создаете серверный скрипт JS, и этот скрипт запускает сервер. Например, встроенный модуль http
позволяет реализовать низкоуровневый HTTP-прослушиватель через createServer
:
const { createServer } = require('http');
const { once } = require('events');
const server = createServer(async (req, res) => {
const chunks = [];
req.on('data', chunk => chunks.push(chunk));
await once(req, 'end');
const body = JSON.parse(chunks.join(''));
// Do stuff with the body
res.statusCode = 200;
res.end('Success!');
});
server.listen(8080);
console.log('Server is listening at http://0.0.0.0:8080/');
Так что, по сути, перестаньте думать с точки зрения файл JavaScript на стороне клиента, отправляющий данные в файл JavaScript на стороне сервера, и подумайте, что ваш браузер отправляет HTTP-запрос на ваш HTTP-сервер.
Я бы порекомендовал использовать вместо этого фреймворк, например express
или koa
для построения вашего сервера, поскольку он позволяет вам более легко настраивать обработку маршрутов c для запросов, и они могут использовать предварительно созданные «middlewares» для выполнения таких общих вещей, как JSON разбор тела и многое другое.