# http

HyperText Transfer Protocol 超文本传输协议

# URL URI

TIP

(URL)A Uniform Resource Locator thatidentifies the location of an Internet resource as specified by RFC 1738.( 统一资源定位符 用于标示网络资源的位置)

(URI,统一资源标识符)A Uniform Resource Identifier that identifies an abstract or physical resource, as specified by RFC 2396.( 统一资源标识符 用于标示一个抽象或者物理资源)

也就是说URI是以一种抽象的,高层次概念定义统一资源标识,而URL则是具体的资源标识的方式。URL是一种URI。

一个完整的url

  • schema:协议
  • host:主机
  • port:端口
  • path:访问路径
  • query:请求参数
  • fragment:#锚点

# querystring

由原生node提供,可对query数据处理

const querystring=require('querystring')
console.log(querystring.escape("id=1"))//escape对传入的字符串编码
console.log(querystring.unescape("id%3D1"))//unescape对传入的字符串解码
console.log(querystring.parse("name=lili&age=18"))//parse对传入的字符串反序列化成对象
console.log(querystring.stringify({name:'lili',age:18}))//stringifyd对象序列化成字符串

//id%3D1
//id=1
//[Object: null prototype] { name: 'lili', age: '18' }
//name=lili&age=18
const Koa = require('koa')
const app = new Koa()
const Router = require('koa-router')
const router= new Router()
const querystring=require('querystring')

router.get('/home',(ctx,next)=>{
	console.log(ctx.query)
	console.log(ctx.querystring)
	console.log(querystring.parse(ctx.querystring))
	ctx.body="2019"
})
app
 .use(router.routes())
 .use(router.allowedMethods())
app.listen(3000, () => {
    console.log('app listening 3000...')
})

//[Object: null prototype] { name: 'wei', age: '20' }//query
//name=wei&age=20//querystring
//[Object: null prototype] { name: 'wei', age: '20' }

# params模式

const Koa = require('koa')
const app = new Koa()
const Router = require('koa-router')
const router= new Router()
const querystring=require('querystring')

router.get('/home/:id/:name',(ctx,next)=>{
	console.log(ctx.params)
	ctx.body="<div>home /:id/:name</div>"
})
app
 .use(router.routes())
 .use(router.allowedMethods())
app.listen(3000, () => {
    console.log('app listening 3000...')
})
//http://localhost:3000/home/17/jk
//{ id: '17', name: 'jk' }
最后更新: 12/23/2020, 2:23:24 PM