Вызов URL с параметрами в узле js [duplicate]

Это утверждение времени компиляции, которое тип *Doubler удовлетворяет интерфейсу PropertyLoadSaver.

Если тип *Doubler не удовлетворяет интерфейсу, то компиляция завершится с ошибкой, аналогичной:

prog.go:21: cannot use (*Doubler)(nil) (type *Doubler) as type PropertyLoadSaver in assignment:
*Doubler does not implement PropertyLoadSaver (missing Save method)

. Вот как это работает. Код var _ PropertyLoadSaver объявляет неназванную переменную типа PropertyLoadSaver. Выражение (*Doubler)(nil) оценивается значением типа *Doubler. *Doubler может быть назначена только переменной типа ProperytLoadSaver, если *Doubler реализует интерфейс PropertyLoadSaver.

Используется пустой идентификатор _, потому что переменная не должна быть упоминается в другом месте в пакете. Тот же результат может быть достигнут с помощью непустого идентификатора:

var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil)
58
задан hippietrail 10 February 2016 в 10:32
поделиться

5 ответов

Есть ли модуль-оболочка поверх http, чтобы более легко обрабатывать HTTP-ответы от приложения-узла?

request

Логика перенаправления в запросе

39
ответ дан neo 19 August 2018 в 03:25
поделиться
  • 1
    Почему живой b'jesus не является частью встроенного модуля http ?! – aaaidan 23 October 2012 в 09:02
  • 2
    Это. Он называется http.request, API довольно прост. – Raynos 23 October 2012 в 21:24
  • 3
    Возможно ли иметь обратный вызов для каждого перенаправления? Я хотел бы сохранить каждый URL-адрес, через который проходит запрос. Не удалось найти его в документах. – Ignas 26 June 2013 в 14:49
  • 4
    @Raynos, метод request () встроенного модуля http не следует переадресации, поэтому он не является частью встроенного модуля http. – gilad mayani 10 November 2016 в 17:44
  • 5

Если у вас есть сервер https, измените свой url на использование протокола https://.

У меня возникла аналогичная проблема с этим. У моего url есть протокол http://, и я хочу сделать запрос POST, но сервер хочет перенаправить его на https. Случилось так, что, оказывается, поведение http-узла отправляет запрос переадресации (следующий) в GET, что не так.

Что я сделал, это изменить мой url на https:// протокол и он работает.

1
ответ дан Kevin F. 19 August 2018 в 03:25
поделиться

Сделайте другой запрос на основе response.headers.location:

      const request = function(url) {
        lib.get(url, (response) => {
          var body = [];
          if (response.statusCode == 302) {
            body = [];
            request(response.headers.location);
          } else {
            response.on("data", /*...*/);
            response.on("end", /*...*/);
          };
        } ).on("error", /*...*/);
      };
      request(url);
4
ответ дан Nakilon 19 August 2018 в 03:25
поделиться
  • 1
    Я не программист JS, поэтому было бы полезно, если бы вы объяснили, почему downvote. – Nakilon 27 February 2018 в 18:37

Если все, что вы хотите сделать, это перенаправление, но все же хотите использовать встроенные модули HTTP и HTTPS, я предлагаю вам использовать https://github.com/olalonde/follow-redirects ,

Все, что вам нужно сделать, это заменить:

var http = require('http');

на

var http = require('follow-redirects').http;

... и все ваши запросы автоматически последуют за перенаправлениями.

Раскрытие: я написал этот модуль.

76
ответ дан Olivier Lalonde 19 August 2018 в 03:25
поделиться

Обновление:

Теперь вы можете выполнить все переадресации с помощью var request = require('request'); с помощью параметра followAllRedirects.

request({
  followAllRedirects: true,
  url: url
}, function (error, response, body) {
  if (!error) {
    console.log(response);
  }
});
22
ответ дан skozz 19 August 2018 в 03:25
поделиться
  • 1
    это полный код? ваш var является http, но затем вы используете функцию с именем request – jcollum 22 June 2015 в 21:46
  • 2
    вы не можете просто потребовать («запрос»), это внешний модуль и его необходимо загрузить & amp; установлен первый - npmjs.com/package/request (запрос на установку npm) – gilad mayani 10 November 2016 в 17:37
Другие вопросы по тегам:

Похожие вопросы: