>  기사  >  웹 프론트엔드  >  node.js에서 http 모듈을 사용하는 방법

node.js에서 http 모듈을 사용하는 방법

亚连
亚连원래의
2018-06-09 16:59:432185검색

이 글은 주로 node.js http 모듈에 대한 심층적인 이해를 소개합니다. 이제 공유하고 참고하겠습니다.

http 모듈은 주로 HTTP 서버와 클라이언트를 구축하는 데 사용됩니다. HTTP 서버 또는 클라이언트 기능을 사용하려면 http 모듈을 호출해야 합니다.

서버 만들기

var http = require(“http”);var url = require(“url”);//创建服务器//http继承自tcpvar server = http.createServer(function (req,res) {  var urlstr = req.url;//获取请求的路径  var urlMethod = req.method;//获取请求的方法  var urlObj = url.parse(urlstr,true);  console.log(urlObj);  
  console.log(urlMethod);  res.end(“hello”);});server.listen(8080);

요청 처리

요청은 get과 post의 두 가지 유형으로 구분됩니다. get 요청 URL 주소에는 매개변수가 있으며 req.url은 매개변수를 얻을 수 있지만 post 요청은 더 복잡합니다. 게시 요청을 처리하려면 req.on()을 사용하세요.

Post 요청 방법: req.on("data"function(){})을 사용하여 읽고, str 문자열 연결을 사용하고, req.on("end",function(){})이 완료된 후 출력합니다. 게시물 요청에서 보내려는 매개변수

get 요청 방법: 매개변수를 가져오려면 요청 주소에 url.parse(req.url,true).query를 사용하세요.

var http = require("http");
var fs = require("fs");
var url = require("url");
var querystring = require("querystring");
var server = http.createServer(function (req,res) {
  console.log(req.method);
  var pathname = url.parse(req.url,true).pathname;
  if(pathname=="/"){
  //  加载注册页面
    var rs = fs.createReadStream("post.html");
    rs.pipe(res);
  }else if(pathname=="/post"){
    // 处理post请求
    var str = "";
    req.on("data",function (chunk) {
      // console.log(chunk.toString());
      str += chunk;
    });
    req.on("end",function(){
      var postObj = querystring.parse(str);
      console.log(postObj);
    })
  }else if(pathname=="/get"){
    // get请求
    var getObj = url.parse(req.url,true).query;
    res.write(JSON.stringify(getObj));
    res.end();
  }else if(pathname!="/favicon.ico"){
    var rs = fs.createReadStream("."+pathname);
    rs.pipe(res);
  };
});
server.listen(8787);

업로드 파일 처리

프론트엔드 HTML 코드는 다음과 같습니다. 자세히 설명하지 않겠습니다.

<form action=“/upimg” method=“post” enctype=“multipart/form-data”>

用户名: <input type=“text” name=“user”><br> 

密码: <input type=“password” name=“pass”><br>

上传图片: <input type=“file” name=“file1”><br> 

<input type=“submit” value=“提交”></form>

파일 업로드를 구현하려면 강력한 모듈을 도입해야 합니다. var formidable = require("formidable"); 해당 모듈이 없으면 터미널에 npm install formidable을 입력하여 설치하세요.

form.parse(req, function(err, fields, fies){}) 메서드 콜백 함수 세 개의 매개변수

  1. err: 오류 메시지 반환

  2. fields: 게시물 요청에 의해 반환된 필드 및 해당 값

  3. fies: 업로드된 파일 개체, 개체에는 파일에 대한 자세한 정보가 많이 포함되어 있습니다.

파일 정보를 얻은 후 데이터 스트림 읽기 및 쓰기를 사용하여 파일을 복사합니다.

var http = require("http");
var fs = require("fs");
var url = require("url");
// 文件上传
var formidable = require("formidable");
var server = http.createServer(function(req,res){
  var pathname = url.parse(req.url,true).pathname;
  if(pathname=="/"){
    var rs = fs.createReadStream("uploads.html");
    rs.pipe(res);
  }else if(pathname=="/uploads"){
    // 实例化一个formidable类
    var form = new formidable.IncomingForm();
   // 调用parse方法
    form.parse(req,function(err,fields,files){
      if(err){
        return console.log(err);
      }else{
        // console.log("字段",fields);
        // 存储字段
        var fieldStr = JSON.stringify(fields);
        fs.writeFileSync("1.txt",fieldStr);
        // 转存文件
        if(!fs.existsSync("uploads")){
          fs.mkdir("uploads");
        }
       // 随机路径
        var filePath = files.img.path;
        var rs = fs.createReadStream(filePath);
        var ws = fs.createWriteStream("./uploads/"+files.img.name);
        rs.pipe(ws);
        rs.on("data",function (chunk) {
          
        })
        rs.on("end",function(){
          console.log("复制成功");
          res.write("上传成功");
          res.end();
        })
        res.setHeader("Content-type","text/html;charset=utf8");  
        console.log("文件",files);
      }
    })

  }else if(pathname!="/favicon.ico"){
    var rs = fs.createReadStream("."+pathname);
    rs.pipe(res);
  }
});
server.listen(8880);

http 시뮬레이션 클라이언트

주로 옵션 구성, 가장 기본적인 매개변수는 다음과 같습니다.

  1. method: 요청 방법을 설명합니다.

  2. host: 서버 IP, 여기서는 localhost를 예로 들어 보겠습니다.

  3. path: 요청 경로;

    this http.createServer()를 사용하여 서버를 만드는 대신 http.request()를 사용하여 서버를 요청하면 나머지는 서버와 거의 동일합니다.
  4. // 通过nodejs模拟客户端
    var http = require("http");
    var options = {
      method:"post",
      host:"localhost",
      port:2121,
      path:"/"
    };
    var request = http.request(options,function (res) {
      var str = "";
      res.on("data",function(chunk){
        str += chunk;
      });
      res.on("end",function () {
        console.log(str);
      })
    });
    var obj = {
      name:"李四",
      age:20
    }
    request.write(JSON.stringify(obj));
    request.end();
  5. 위 내용은 모두를 위해 제가 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

    관련 기사:

vue-router에서 ElementUI를 사용하여 탐색을 구현하는 방법

자세한 설명 vue 프로젝트에 elementUI 구성 요소 소개

vue에서 새로 고침 및 탭 전환 구현

In Vue- How cli에서 별도 페이지의 배경색을 설정하려면

Angular2의 Material 사용 정보(자세한 튜토리얼)

Angular에서 Lodash 메서드를 사용하는 방법은 무엇입니까?

네이티브 js를 사용하여 지방자치단체 간 3단계 연결을 구현하세요

위 내용은 node.js에서 http 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.