Nano Hash - криптовалюты, майнинг, программирование

запрос к серверу node.js

Я изучаю запросы в node. Я создал простой сервер

var http=require("http");
var fs=require("fs");
http.createServer(function(req,res){


    switch(req.url){
        case '/redirect' :
            res.writeHead({"Location ":'/'});
            res.end();
            break;

        case '/form.html' :
            res.writeHead(200,{'Content-Type': 'text/html'});
            req.setEncoding("utf-8");
            var ws=fs.createReadStream("form.html")
            var body="";
            ws.pipe(body);      
            res.end(JSON.stringify(body));
            break;

        default:
        res.writeHead(200,{"Content-Type": 'text/plain'});
        res.end(JSON.stringify({
            url:req.url,
            method:req.method,
            headers:req.headers
        }));

    }

}).listen(4001)

и запросить скрипт

var request=require("request");
var inspect = require("util").inspect;

request('http://localhost:4001/form.html',function(err,res,body){
    if(err){
        throw err;
    }
    console.log(inspect({
        err:err,
        res:{
            statusCode:res.statusCode
        },
        body:JSON.parse(body)
    }))
});

Если я правильно понял (логика запросов) = 1) скрипт запроса делает запрос (получение по умолчанию) на сервер 2) скрипт сервера заметит запрос и определит, что делать с помощью request.url, здесь мы делаем запрос на /form.html 3) Сценарий сервера сделает /form/html case = поместит заголовок в ответ, создаст поток чтения и отправит значение в ответ 4) Ответ отправлен в сценарий запроса, где он представлен аргументом тела в функции обратного вызова 5 ) Сценарий теперь выполняет действие в функции обратного вызова = console.log ответ.

form.html содержит простую форму htmp, но почему вывод скрипта запроса

{ err: null,
  res: { statusCode: 200 },
  body:
   { url: '/form.html',
     method: 'GET',
     headers: { host: 'localhost:4001', connection: 'close' } } }

а не (в теле) текстовый код, содержащий form.html?


Ответы:


1

Я не уверен, что точно понимаю, что вы пытаетесь сделать в ветке form.html вашего коммутатора, но если вы просто пытаетесь обслуживать файл form.html, вы можете сделать это:

    case '/form.html' :
        res.writeHead(200,{'Content-Type': 'text/html'});
        var ws = fs.createReadStream("form.html");
        ws.pipe(res);
        break;

Это передаст содержимое локального файла form.html в браузер.

30.01.2016
  • извините, это была моя опечатка при написании кода здесь, код, который я выполняю, содержит form.html, отредактированный q 31.01.2016
  • @Johnyb - переписал мой ответ. 31.01.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..