node-重要API學習

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}`)
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章