HTTP模块
创建HTTP服务端
- 创建一个http服务
const http = require('http')
const server = http.createServer((request,response)=>{
response.setHeader("content-type","txt/html;charset=utf-8")
response.end("hello server")
});
server.listen(9000,()=>{
console.log("9000服务器已启动!");
})
- 获取请求的报文
const http = require('http')
const server = http.createServer((request, response) => {
console.log(request.method);
console.log(request.url);
console.log(request.httpVersion);
console.log(request.headers);
response.end("hello server")
});
server.listen(9000, () => {
console.log("9000服务器已启动!");
})
- 获取请求体
const server = http.createServer((request, response) => {
let body = "";
request.on("data", chunk => {
body += chunk
})
request.on("end",()=>{
console.log(body);
response.end("end!!!!!")
})
});
- 获取请求参数
const http = require('http')
const url = require("url")
const server = http.createServer((request, response) => {
let res = url.parse(request.url,true)
console.log(res);
console.log(res.path);
console.log(res.query.keyword);
response.setHeader("content-type", "text/html;charset=utf-8")
response.end("server response==>" + res)
});
server.listen(9000, () => {
console.log("9000服务器已启动!");
})
const http = require('http')
const url = require("url")
const server = http.createServer((request, response) => {
let url = new URL(request.url, "http://127.0.0.1")
console.log(url.pathname);
console.log(url.searchParams.get("keyword"));
response.setHeader("content-type", "text/html;charset=utf-8")
response.end("server response==>" + res)
});
server.listen(9000, () => {
console.log("9000服务器已启动!");
})
- http请求小测试
const http = require("http");
const path = require("path");
const server = http.createServer((request, response) => {
response.setHeader("content-type", "text/html;charset=utf-8")
let { method } = request;
let { pathname } = new URL(request.url, "http://127.0.0.1")
if (method === "GET" && pathname === "/login") {
response.end("登录成功!!!")
}else if(method==="GET"&&pathname==="/reg"){
response.end("注册成功!!!");
}else{
response.end("Not Found!")
}
});
server.listen(9000, () => {
console.log("9000端口已启动!!");
})
- http响应的设置
const http = require("http");
const server = http.createServer((request, response) => {
response.statusCode = 200
response.statusCode = 203
response.statusMessage="love you"
response.setHeader("content-type", "text/html;charset=utf-8")
response.setHeader("Server","Nodejs")
response.setHeader("test",["5","6","7"])
response.write("设置响应体!!")
response.write("设置响应体!!")
response.write("设置响应体!!")
response.end("server response")
});
server.listen(9000, () => {
console.log("9000端口已启动!!");
})
- 读取文件的响应
const http = require("http");
const fs = require("fs")
const server = http.createServer((request, response) => {
response.setHeader("content-type", "text/html;charset=utf-8")
let html = fs.readFileSync(__dirname + "/html.html");
response.end(html)
});
server.listen(9000, () => {
console.log("9000端口已启动!!");
})
- 搭建一个静态资源的服务
const http = require("http");
const fs = require("fs");
const path = require("path");
const server = http.createServer((request, response) => {
let { pathname } = new URL(request.url, "http://127.0.0.1")
let root = __dirname + "/dist"
let filePath = root + "pathname"
let mimes = {}
if (request.method !== "GET") {
response.statusCode = 405;
response.end('405 Methods Not Allowed!')
return
}
fs.readFile(filePath, (err, data) => {
if (err) {
console.log(err);
response.setHeader("content-type", "text/html;charset=utf-8")
switch (err.code) {
case "ENOET":
response.statusCode = 404;
response.end('不存在!')
case "EPERM":
response.statusCode = 403;
response.end('没有访问权限!')
default:
response.statusCode = 500;
response.end('ERR!')
}
return
}
const ext = path.extname(filePath).slice(1)
let type = mimes[ext]
if (type) {
response.setHeader("content-type", type + ";charste=utf-8")
} else {
response.setHeader("content-type", "application/octet-stream")
}
response.end(data)
})
});
server.listen(9000, () => {
console.log("9000端口已启动!!");
})