nodejs 中文网:http://nodejs.cn/api/querystring.html
node自动重启工具:nodemon
安装命令:sudo npm install -g nodemon
启动命令:nodemon http.js(书写node代码的js文件)
跨域方案:jsonp、cors、后端跨域
一、url
url.parse(url地址,将query转换为对象获取-布尔值,解析//开头的地址-布尔值)
将字符串转换为对象
const url = require('url');
const urlObj = url.parse('https:www.baidu.com?id=3&name="aaaa"&flag=true',true) //将地址转换为对象,对象中有地址的各个属性
console.log(urlObj.query) //得到query的对象
url.format(urlObject)
将对象转换为字符串
const url = require('url');
const urlString = url.format({
protocol: 'https:',
slashed: true,
auth: null,
host: 'www.baidu.com:8080',
port: '8080',
hostname: 'www.baidu.com',
hash: null,
search: '?id=3&name=aaa',
query: {id: '3',name; 'aaa'},
pathname: '/api/list',
path: '/api/list?id=3&name=aaa',
href: 'https://www.baidu.com:8080/api/list/?id=3&name=aaa'
})
const.log(urlString); //https://www.baidu.com:8080/api/list/?id=3&name=aaa
url.resolve(from,to)
可以根据to中输入的是绝对路径还是相对路径,来和前面的地址进行拼接
const url = require('url');
url.resolve('https://www.baidu.com/api/list','/one'); //https:www.baidu.com/one
url.resolve('https://www.baidu.com/one/two','three'); //https://www.baidu.com/one/three
url.resolve('https://www.baidu.com/one/two','../three'); //https://www.baidu.com/three
二、Query string
querystring.parse(字符串,分隔符的形式)
将地址栏中的query字符串转换为对象
const querystring = require('querystring');
console.log(querystring.parse('id=3&name=aaa')); //{id: 3,name: aaa}
console.log(querystring.parse('id=3/name=aaa','/')); //{id: 3,name: aaa}
console.log(querystring.parse('id:3/name:aaa','/',':')); //{id: 3,name: aaa}
querystring.stringify(对象,格式化各个键值对之间的分隔符,格式化键和值之间的分隔符)
将对象转换为字符串
const querystring = require('querystring');
console.log(querystring.stringify({id:'3',name:'aaa'})) //id=3&name=aaa
console.log(querystring.stringify({id:'3',name:'aaa'},',')) //id=3,name=aaa
console.log(querystring.stringify({id:'3',name:'aaa'},',',':')) //id:3,name:aaa
querystring.escape(str) 对给定的 str
执行 URL 百分比编码
querystring.unescape(str) 对给定的 str
执行 URL 百分比解码
三、HTTP
http.createServer() 启动一个server
vue框架中的server也是通过node的createServer启动的
const http = require('http');
const server = http.createServer((request,response) => {
//response控制前端显示什么内容
response.writeHead(200,{'content-type': 'text/html'})
response.write('<b>str</b>'); //调用response的方法,返回给浏览器的内容---这里返回什么,前端就显示什么
response.end();
}) //回调request-浏览器请求的时候携带的东西,response-返回给浏览器的东西
server.listen(8000)
get请求一个地址,地址返回内容,内容解析之后返回给浏览器
http.get()
const https = require('https');
https.get('地址',(res) => {
console.log("状态码",res.statusCode);
console.log("请求头",res.headers['content-type'])
let error;
let contentType = res.headers['content-type']
if(res.statusCode !== 200) {
error = new Error('Request Failed.\n' + `Status Code: ${res.statusCode}`);
}else if(!/^application\/json/.test(contentType)) {
error = new Error('Invalid content-type.\n' + `Expected application/json but received ${contentType}`);
}
if(error) {
console.error(error,error.message); //error是错误栈,error.message是new Error时传入的内容
res.resume();
return;
}
res.setEncoding('utf8');
let rawData = '';
res.on('data',(chunk) => {rawData+=chunk;});
res.on('end',() => {
try {
const parsedData = JSON.parse(rawData);
console.log(parsedData);
}catch (e) {
console.log(e.message)
}
});
}).on('error',(e) => {
console.error(`Got error: ${e.message}`)
})