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}`)
})