Loading

HTTP协议

HTTP协议的概念

超文本传世协议(Hyper Text Transfer Protocol) 规定了如何从网站服务器传输超文本到本地浏览器,它基于客户端服务器架构工作,是客户端(用户)和服务器端(网站)请求和应答的标准。

 

报文

在HTTP请求和响应的过程中传递的数据块就叫报文,包括要传送的数据和一些附加信息,并且要遵守规定好的格式。

请求方式(Request Methods): 

  • GET 请求数据
  • POST 发送数据
  • req.method 获取请求方式
  • req.url 获取请求地址
  • req.headers 获取请求报文
  • Reponse: 显示的是服务器响应给客户端的内容
  • // 请用系统模块
    const http = require('http')
    // 创建Web服务器
    const app = http.createServer()
    // 当客户端发送请求的时候
    app.on('request', (req, res) => {
      // 获取请求的方式 req.methods
      console.log(req.method) //  获取请求方式
      console.log(req.headers) // 获取请求报文
      console.log(req.url) // 获取请求地址
      if (req.url == '/index' ) {
        res.end('index')
      } else if ( req.url == '/login') {
        res.end('login')
      } else {
        res.end('not found')
      }
      // 响应
      return res.end('hello word')
    })
    // 监听3000端口
    app.listen(3000)
    console.log('服务器启动成功,监听端口:3000')
    

     

响应报文

1. HTTP 状态码

  • 200 请求成功
  • 404 请求的资源没有找到
  • 500 服务器端错误
  • 400 客户端请求语法错误

2. 修改状态码

res.writeHead(500)

3.  res.writeHead() 内容类型

  • text/html
  • text/css
  • application/javascript
  • image/jpeg
  • application/json 

4.req.url () 请求地址

5.url.parse() 处理URL地址

  • 参数一:要解析的url地址
  • 参数二:将查询参数解析成对象形式
const url = require('url')

url.parse(req.url, true)

 

6.路由

 1 app.on('request', (req, res) => { 5 let {pathname} = url.parse(req.url)
 6 
 7   if (pathname == '/index' ) {
 8     res.end('index')
 9   } else if ( pathname == '/login') {
10     res.end('login')
11   } else {
12     res.end('not found')
13   }
14 })

 

7. 静态资源

服务器端不需要处理,可以直接响应给客户端的资源就是静态资源,例如css、javascript 、image

8. 动态资源

相同的请求地址不同的响应资源,这种资源就是动态资源。

 

posted @ 2019-07-21 10:48  fsdffsdf  阅读(136)  评论(0)    收藏  举报