首页 nodejs 正文
317

nodejs搭建简易接口服务器

  • yiqingpeng
  • 2020-01-09
  • 0
  •  
利用node的http模块可以快速搭建一个简易的web服务器,当我们需要快速地构建一些数据接口服务时,这非常有用。那当然如果要用node来搭建web网站的话,建议使用http2模块。毕竟http模块只能支持http1.1。
const cheerio = require('cheerio');
const request = require('request');
const fs = require('fs');
const os = require('os');
const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
    var info = url.parse(req.url);
    if (info.path === '/') {
        fetchLinks(res);
    } else {
        res.writeHead(404);
        res.end();
    }
   
});
server.on('clientError', (err, socket) => {
  socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});

server.listen(8000);

function fetchLinks(response){
    request('https://www.xxxx.com/sitemap', (err, resp, html) => {
        if (err) {
            println('Error occurred:' + ele);
            return console.error(err);
        }
        //return;
        var $ = cheerio.load(html);
        var tagAList = $('td a');
        var targetFile = './links.txt';
        fs.exitsSync(targetFile) && fs.unlinkSync(targetFile);
        tagAList.each(function (idx){
            var href = tagAList[idx].attribs['href'];
            println(href);
            fs.writeFileSync(targetFile, href + os.EOL,  {flag:'a'});
        });
        response.setHeader('Content-Type', 'application/json');
        response.setHeader('X-Powerby', 'nodejs');
        response.writeHead(200, { 'Content-Type': 'application/json' });
        var content = fs.readFileSync(targetFile, 'utf8');//if no 'utf8', Buffer would be returned.
        response.write(JSON.stringify(content.split(os.EOL)));
        response.end();
    });
}

function println(msg){
    console.log(msg);
} 

正在加载评论...