UNPKG

workshopper-browser-guide

Version:

Create an html browser version of the exercise descriptions

101 lines (95 loc) 5.99 kB
<!doctype html> <html class="no-js" lang="pt-br"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>learnyounode Guide</title> <meta name="description" content="learn git and github"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="assets/css/style.css"> <link rel="stylesheet" href="assets/css/code.css"> <link href='assets/fonts/fonts.css' rel='stylesheet' type='text/css'> </head> <body> <!--[if lt IE 8]> <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> <![endif]--> <header class="site-header"> <div class="nav u-posFixed"> <ul class="nav-lang"> <li><a href="http_file_server.html" >English</a></li> <li><a href="http_file_server.es.html" >Español</a></li> <li><a href="http_file_server.ja.html" >日本語</a></li> <li><a href="http_file_server.pt-br.html" >Português (Brasil)</a></li> <li><a href="http_file_server.ru.html" >Русский</a></li> <li><a href="http_file_server.zh-cn.html" >中文 (中国)</a></li> <li><a href="http_file_server.zh-tw.html" >中文 (臺灣)</a></li> </ul> <div class="wrap-width u-textCenter"> <a href="time_server.pt-br.html" <span class="u-floatLeft hand"></span> </a> <a class="filledblock" href="index.pt-br.html">learnyounode</a> <a href="http_uppercaserer.pt-br.html" <span class="u-floatRight hand"></span> </a> </div> </div> <div class="wrapper"> <div class="u-floatLeft"> <span class="all-caps">CHALLENGE</span> <h2 class="challenge-name">SERVIDOR DE ARQUIVOS HTTP</h2> </div> <div class="u-floatRight u-textRight"> <span class="all-caps">NUMBER</span> <h2 class="challenge-name">11 / 13</h2> </div> </div> </header> <div class="wrapper"> <p>Escreva um <strong>servidor</strong> HTTP que entregue o mesmo arquivo de texto para cada solicitação recebida.</p> <p>O servidor deve escutar na porta fornecida pelo primeiro argumento do seu programa.</p> <p>Será fornecida a localização do arquivo para servir como segundo argumento da linha de comando. Você <strong>deve</strong> usar o método <code>fs.createReadStream()</code> para a stream do conteúdo do arquivo para resposta.</p> <hr> <h2 id="dicas">DICAS</h2> <p>Porque nós precisamos criar um servidor HTTP para este exercício em vez de criar um servidor TCP genérico, nós devemos usar o modulo <code>http</code> do núcleo do Node. Como o módulo <code>net</code>, <code>http</code> possui um método chamado <code>http.createServer()</code> mas este cria um servidor que pode transmitir HTTP.</p> <p><code>http.createServer()</code> retorna um callback que é chamado uma vez para cada conexão recebida pelo servidor. A função callback é escrita:</p> <pre><code class="lang-js"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">callback</span> <span class="hljs-params">(request, response)</span> </span>{ <span class="hljs-comment">/* ... */</span> } </code></pre> <p>Onde os dois argumentos são objetos que representam a requisição HTTP e a resposta correspondente para esta requisição. <code>request</code> é utilizado para buscar propriedades, tais como o cabeçalho e a consulta do pedido, enquanto <code>response</code> é utilizado para enviar dados para o cliente bem como o cabeçalho e o corpo.</p> <p>Ambos <code>request</code> and <code>response</code> são também Node streams!O que significa que podemos usar as abstrações de streaming para enviar e receber dados que se adéquam ao seu caso de uso. </p> <p><code>http.createServer()</code> também retorna uma instância para seu <code>server</code>. Você deve chamar <code>server.listen(portNumber)</code> para iniciar uma escuta na porta específica.</p> <p>Um típico Servidor HTTP Node parece com isto:</p> <pre><code class="lang-js"><span class="hljs-keyword">var</span> http = <span class="hljs-built_in">require</span>(<span class="hljs-string">'http'</span>) <span class="hljs-keyword">var</span> server = http.createServer(<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-params">(req, res)</span> </span>{ <span class="hljs-comment">// request handling logic...</span> }) server.listen(<span class="hljs-number">8000</span>) </code></pre> <p>A documentação do modulo <code>http</code> pode ser encontrada redirecionando seu navegador para: <a href="../node_apidoc/http.html">/node_apidoc/http.html</a></p> <p>O núcleo do módulo <code>fs</code> também possui algumas APIs streaming para arquivos.Você precisa usar o método <code>fs.createReadStream()</code> para criar uma stream que representa o arquivo que você passa como argumento. O método retorna um objeto de stream que você pode usar <code>src.pipe(dst)</code> para fornecer os dados de <code>src</code> stream para o <code>dst</code> stream. Desta maneira, você pode conectar um filesystem stream com uma resposta HTTP stream.</p> <hr> <div class="prenext"> <div class="u-floatLeft"> <a href="time_server.pt-br.html" class="u-inline-block all-caps">SERVIDOR DE TEMPO <div></div> </a> </div> <div class="u-textRight u-floatRight"> <a href="http_uppercaserer.pt-br.html" class="u-inlineBlock all-caps">TRANSFORMADOR UPPERCASE HTTP <div></div> </a> </div> </div> <footer> <!-- <ul> <li class="all-caps"><a href="index.html"><strong>Challenges</strong></a></li> <li class="all-caps"> <a href="https://github.com/rvagg/learnyounode/issues/new" target="_blank">Open an Issue</a> </li> </ul> --> </footer> </div> </body> </html>