이 글은 주로 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){}) 메서드 콜백 함수 세 개의 매개변수
err: 오류 메시지 반환
fields: 게시물 요청에 의해 반환된 필드 및 해당 값
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 시뮬레이션 클라이언트
주로 옵션 구성, 가장 기본적인 매개변수는 다음과 같습니다.
method: 요청 방법을 설명합니다.
host: 서버 IP, 여기서는 localhost를 예로 들어 보겠습니다.
path: 요청 경로;
this http.createServer()를 사용하여 서버를 만드는 대신 http.request()를 사용하여 서버를 요청하면 나머지는 서버와 거의 동일합니다.// 通过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();
vue-router에서 ElementUI를 사용하여 탐색을 구현하는 방법
자세한 설명 vue 프로젝트에 elementUI 구성 요소 소개
In Vue- How cli에서 별도 페이지의 배경색을 설정하려면
Angular2의 Material 사용 정보(자세한 튜토리얼)
Angular에서 Lodash 메서드를 사용하는 방법은 무엇입니까?
네이티브 js를 사용하여 지방자치단체 간 3단계 연결을 구현하세요
위 내용은 node.js에서 http 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!