NodeJS получает параметры из URL -> httprequest и выражает, что оба не работают - PullRequest
0 голосов
/ 19 октября 2019

Я запускаю приложение NodeJS и посещаю его по адресу localhost/?product=test. Я хочу получить «тест» (или любую информацию, относящуюся к URL).

Google показывает мне 2 варианта, но я не могу заставить их работать:

  1. Использовать HttpRequest
    const http = require('http');
    const url = require('url');

    http.createServer(function (req, res) {
      const queryObject = url.parse(req.url,true).query;
      console.log(queryObject);

      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('Feel free to add query parameters to the end of the url');
    }).listen(3000);

Я пытаюсь использовать этот код или его варианты, но проблема в том, что я не могу создать сервер для прослушивания, поскольку адрес уже используется. Я не слишком знаком с NodeJS, но я не понимаю, как правильно использовать HttpRequest для прослушивания работающего приложения и получения его URL.

Использование Express

Использование Express не приводит к ошибке, но все фрагменты кода, которые должны работать, возвращают мне неопределенное значение при получении URL.

Что такоепростой способ получить URL, который пользователь использовал для посещения моего приложения NodeJS, чтобы я мог получить параметры?

1 Ответ

1 голос
/ 19 октября 2019

Если вы хотите получить доступ к localhost без заполнения порта, как здесь localhost/?product=test, тогда вы должны слушать порт 80, а не 3000. В противном случае ваш запрос должен выглядеть следующим образом: localhost:3000/?product=test

Вы также должны создать метод маршрута для продуктов. В экспрессе это будет выглядеть так:

const express = require('express')
const app = express()
const port = 80

app.get('/', (req, res) => res.send('home'))

app.get('/product/:productId', function (req, res) {
  res.send(req.params)
})

app.listen(port, () => console.log(`Listening on port ${port}!`))

Если вы запустите этот пример, ваш URL-адрес запроса должен быть http://localhost/product/test, а ответ будет выглядеть как

{
  "productId": "test"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...