GET和POST请求的区别
GET 和 POST 是 HTTP 协议请求的两种方式。
1、GET 主要用来获取数据,POST 主要用来提交数据
2、GET 带参数请求是将参数缀到 URL 之后,在地址栏中输入 url 访问网站就是 GET 请求,
3、POST 带参数请求是将参数放到请求体中
4、POST 请求相对 GET 安全一些,因为在浏览器中参数会暴露在地址栏
5、GET 请求大小有限制,一般为 2K,而 POST 请求则没有大小限制
HTTP 服务可以设置响应头 Content-Type 来表明响应体的 MIME 类型,浏览器会根据该类型决定如何处理资源
const http=require('http');
const fs=require('fs');
const path=require('path')
let mimes={
html: 'text/html',
css: 'text/css',
js: 'text/javascript',
png: 'image/png',
jpg: 'image/jpeg',
gif: 'image/gif',
mp4: 'video/mp4',
mp3: 'audio/mpeg',
json: 'application/json'
}
const server=http.createServer((request,response)=>{
response.setHeader('content-type','text/html;charset=utf-8')
//读取文件内容
//获取请求URL的路径
let {pathname}=new URL(request.url,'http://127.0.0.1');
//拼接文件路径
let filePath=__dirname+'/page'+ pathname;
//读取文件fs异步API
fs.readFile(filePath,(err,data)=>{
if(err){
response.setHeader('content-type','text/html;charset=utf-8')//解决中文乱码问题
//判断段错误代号
switch(err.code){
case 'ENOENT':
response.statusCode=404
response.end('<h1>404 Not Found</h1>')
}
// response.statusCode=500
// response.end('文件读取失败')
return;
}
//获取文件名后缀
let ext=path.extname(filePath).slice(1)
//获取对应的类型
let type=mimes[ext]
if(type){
//匹配到
response.setHeader('content-type',type+';charset=utf-8')//解决中文乱码问题
}else{
response.setHeader('content-type','application/octet-stream')
}
//响应文件内容
response.end(data)
})
// if(pathname ==='/index.html'){
// let html=fs.readFileSync(__dirname+'/page/index.html')
// response.end(html)
// }else if(pathname ==='/css/app.css'){
// let css=fs.readFileSync(__dirname+'/page/css/app.css')
// response.end(css)
// }else if(pathname ==='/images/logo.png'){
// let img=fs.readFileSync(__dirname+'/page/images/logo.png')
// response.end(img)
// }else{
// response.statusCode=404;
// response.end('<h1>Not Found</h1>')
// }
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
/**
* 创建一个 HTTP 服务,端口为 9000,满足如下需求
* GET /index.html 响应 page/index.html 的文件内容
* GET /css/app.css 响应 page/css/app.css 的文件内容
* GET /images/logo.png 响应 page/images/logo.png 的文件内容
*/
const http=require('http');
const fs=require('fs')
const server=http.createServer((request,response)=>{
response.setHeader('content-type','text/html;charset=utf-8')
//读取文件内容
//获取请求URL的路径
let {pathname}=new URL(request.url,'http://127.0.0.1');
//拼接文件路径
let filePath=__dirname+'/page'+ pathname;
//读取文件fs异步API
fs.readFile(filePath,(err,data)=>{
if(err){
response.statusCode=500
response.end('文件读取失败')
return;
}
//响应文件内容
response.end(data)
})
// if(pathname ==='/index.html'){
// let html=fs.readFileSync(__dirname+'/page/index.html')
// response.end(html)
// }else if(pathname ==='/css/app.css'){
// let css=fs.readFileSync(__dirname+'/page/css/app.css')
// response.end(css)
// }else if(pathname ==='/images/logo.png'){
// let img=fs.readFileSync(__dirname+'/page/images/logo.png')
// response.end(img)
// }else{
// response.statusCode=404;
// response.end('<h1>Not Found</h1>')
// }
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
const http=require('http');
const fs=require('fs')
const server=http.createServer((request,response)=>{
response.setHeader('content-type','text/html;charset=utf-8')
//读取文件内容
let {pathname}=new URL(request.url,'http://127.0.0.1');
if(pathname =='/'){
let html=fs.readFileSync(__dirname+'/10_table.html')
response.end(html)
}else if(pathname =='/index.css'){
let css=fs.readFileSync(__dirname+'/index.css')
response.end(css)
}else if(pathname =='/index.js'){
let js=fs.readFileSync(__dirname+'/index.js')
response.end(js)
}else{
response.statusCode=404;
response.end('<h1>Not Found</h1>')
}
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
const http=require('http');
const fs=require('fs')
const server=http.createServer((request,response)=>{
response.setHeader('content-type','text/html;charset=utf-8')
//读取文件内容
const html=fs.readFileSync(__dirname+'/10_table.html')
response.end(html)
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
const http=require('http');
const server=http.createServer((request,response)=>{
//设置响应状态码
response.statusCode=200;
//设置响应头
response.setHeader('content-type','text/html;charset=utf-8')
//设置响应体
response.write('i love ')
response.end('reponse')//设置响应体
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})

const http=require('http');
const server=http.createServer((request,response)=>{
response.setHeader('content-type','text/html;charset=utf-8')
//获取请求的方法(解构赋值)
let {method}=request;
//获取请求的url路径(解构赋值)
let {pathname}=new URL(request.url,'http://127.0.0.1:9000')
console.log(method);//GET
console.log(pathname);// /search
if(method=='GET'&&pathname=='/login'){
//登录情形
response.end('登录页面')
}else if(method=='GET'&&pathname=='/reg'){
response.end('注册页面')
}else{
response.end('NOT FIND')
}
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
const http=require('http');
//创建服务对象
//request是对浏览器请求报文的封装对象
//reponse是对服务器返回报文的封装对象
const server=http.createServer((request,response)=>{
//实例化URL对象
let url=new URL(request.url,'http://127.0.0.1:9000')
//输出路径
console.log(url.pathname);
//输出查询字符串
console.log(url.searchParams.get('keyword'));
response.end('url new')
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
const url=require('url')
const http=require('http');
//创建服务对象
//request是对浏览器请求报文的封装对象
//reponse是对服务器返回报文的封装对象
const server=http.createServer((request,response)=>{
//解析resquest.url
let res=url.parse(request.url,true);
//路径
let pathname=res.pathname;
console.log(pathname);
//查询字符串
let keyword=res.query.keyword;
console.log(keyword);
response.end('url')
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})
const http=require('http');
//创建服务对象
//request是对浏览器请求报文的封装对象
//reponse是对服务器返回报文的封装对象
const server=http.createServer((request,response)=>{
//声明一个变量
let body=''
//绑定data事件
request.on('data',chunk=>{
body+=chunk;
})
//绑定end事件
request.on('end',()=>{
console.log(body);
request.end('Hello,http')
})
})
//监听端口,启动服务
server.listen(9000,()=>{
console.log('服务已经启动...');
})