node server req/url

1.res.writeHead

response.writeHead(statusCode, [reasonPhrase], [headers])

 

向请求的客户端发送响应头。
该函数在一个请求内最多只能调用一次,如果不调用,则会自动生成一个响应头。
因为实际开发中,我们需要返回对应的中文以及对应的的文本格式
所以我们需要设置对应的响应头,响应头决定了对应的返回数据的格式以及编码格式

接收参数:

  • 第一个是HTTP状态码,如200(请求成功),404(未找到)等。
  • 第二个是告诉浏览器发送的数据类型
  • 第三个就是具体发送的是什么数据
  • 最后一个告诉浏览器使用什么编码解析
该格式可以识别HTML结构,编码格式是UTF-8
res.writeHead(200,{‘Content-Type’:‘text/html;charset=UTF8’});
该格式不可以识别HTML结构
res.writeHead(200,{‘Content-Type’:‘text/plain;charset=UTF8’});
该格式识别图片
res.writeHead(200,{‘Content-Type’:‘image/jpg;charset=UTF8’});
该格式识别样式
res.writeHead(200,{‘Content-Type’:‘text/css;charset=UFT8’});
json格式
res.writeHead(200,{'Content-Type' : 'application/json',charset:'UTF8'})

 

引用

2.url模块

首先是url.parse(req.url, true)返回的数据

Url {
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?username=admin&password=123456',
  query:
   [Object: null prototype] { username: 'admin', password: '123456' },
  pathname: '/login',
  path: '/login?username=admin&password=123456',
  href: '/login?username=admin&password=123456' }

要拿到地址 url.parse(req.url, true).pathname

那么要拿到到user和密码

var urlEeq = url.parse(req.url,true)
    console.log('inherit',typeof urlEeq.query, urlEeq.query.username)

// 发现在query中  query是对象 就可以用对象解包
{name , password} = query

 3.post请求

下面例子只用于传输字符串数据

var http = require('http')
var fs = require('fs')
var url = require('url')

let user = [{"name":"a","drink":"beer"},{"name":"b","drink":"82年拉菲"}]
http.createServer((req, res) => {
  var urlEeq = url.parse(req.url,true)
  if (req.method === 'GET') {
    console.log(urlEeq.query)
    complete()
  } else if (req.method === 'POST') {
    complete()
  }

  function complete() {
      if (urlEeq.pathname === '/login') {
        res.set({
          "Access-Control-Allow-Origin": "*",
          'Access-Control-Allow-Methods': 'OPTIONS,HEAD,DELETE,GET,PUT,POST',
          'Access-Control-Allow-Headers': 'x-requested-with, accept, origin, content-type',
          'Access-Control-Max-Age':10000,
          'Access-Control-Allow-Credentials':true
      })
            console.log('inherit')
            res.end('JSON.stringify(user)');
      } else if (urlEeq.pathname === '/register') {
        let result = []
        req.on('data', buffer => {
          console.log('1',buffer)
          result.push(buffer)
        })
        req.on('end', () => {
          let data = Buffer.concat(result)
          console.log(data.toString(),result.toString())
        })
      }
  }
}).listen(8888)

 

posted @ 2020-03-04 09:15  容忍君  阅读(520)  评论(0)    收藏  举报