美文网首页
搭建服务器

搭建服务器

作者: 学的会的前端 | 来源:发表于2019-02-28 14:11 被阅读0次

http-server

使用http-server node工具启动一个静态服务器,并没有任何的后端。

npm install http-server -g
http-server

//index.html文件
<body>
    <script>
        var xhr = new XMLHttpRequest()
        xhr.open('GET','/cate.json',true)
        xhr.send()
        xhr.onload = function(){
            if((xhr.status >= 200 & xhr.status < 300) || xhr.status === 304){
                var data = xhr.responseText
                console.log(data)
            }
        }
    </script>
</body>
//cate.json文件,响应的数据
{
    "status": 200,
    "data": 2
}
image.png

把数据的响应内容放到cate.json这个文件中,相当于像这个文件发送请求,返回这个文件的内容,而这个文件的内容就是数据响应的结果,就可以实现数据的模拟。简单开发时可以使用。

使用http://easy-mock.com/ ,线上mock数据

  • 登录注册https://easy-mock.com/
  • 创建新项目


    创建项目.PNG
  • 点击/hunger进入建立接口


    image.png

    之后创建接口


    创建接口.PNG
  • 进入接口进行编辑,之后更新


    编辑接口.PNG
  • 更新之后便有了URL地址


    image.png
    URL地址.PNG
  • 在浏览器中打开URL地址


    image.png
  • 也可以使用命令行curl,对生成的URL地址进行测试,用curl + URL
    image.png
  • 也可以在本地做测试,利用http-server。(我用的是vscode的live-server)


    image.png

    浏览器结果


    image.png

缺点:数据是比较死的,无法根据条件进行模拟。比如用户登录状态,用户输入用户名和密码有可能会成功,有可能会失败,但是很难进行成功和失败的模拟。

线上mock数据平台

  1. 使用http://easy-mock.com/
  2. 使用http://rapapi.org/org/index.do
  3. 使用server-mock
    使用server-mock node工具启动一个能处理静态文件和动态路由的服务器

手写一个服务器

  • 使用nodejs搭建一个服务器,监听9000端口
//nodejs里面有个内置模块http
//nodejs里面通过require加载一个模块,require是一个对象。

var http = require('http')

//createServer创建一个服务器
//服务器里面有一个回调函数
//当通过浏览器访问服务器的时候,请求底层会被封装成一个对象,这个对象就是传入的第一个参数,req。
//用户请求的信息都在这个对象req里面。
//res是返回给用户的对象
var server = http.createServer(function(req,res){
    console.log('jirengu')//在控制台展示,而不是浏览器
    //通过setHeader()设置响应头,权重很高,响应头的作用:告诉浏览器一些相关的信息,按照这些信息进行解析
    //text/plain:告诉浏览器接受到的数据就当成字符串(明文)展现就可以了,所以页面展现的是<h1>jirengu</h1>
    //text/html告诉浏览器接收到的字符串要当成HTML渲染,所以展示的是jirengu
    //charset=gbk告诉浏览器以gbk的方式进行解码,汉字就会乱码
    //charset=utf-8汉字不会乱码
    res.setHeader('Content-Type','text/html; charset=utf-8')
    //res.write('hello word')
    //res.write('<h1>jirengu</h1>') 
    res.write('<h1>饥人谷</h1>')
    //调用end,结束请求。
    res.end()
})
//.listen方法启动这个服务器,并且监听9000端口
server.listen(9000)
//想运行多个js文件,必须启动多个服务器,每一个服务器必须要使用不同的端口。
  • nodejs的应用
var http = require('http')
var server = http.createServer(function(request, response){
    setTimeout(function(){
      
      //response.setHeader权重最高
      response.setHeader('Content-Type','text/html; charset=utf-8')
      response.writeHead(200, 'haha')
      response.write('<html><head><meta charset="gbk" /></head>')
      response.write('<body>')
      response.write('<h1>你好</h1>')
      response.write('</body>')
      response.write('</html>')
      
      response.end()
    },2000);
  })
  
console.log('open http://localhost:8080')
server.listen(8080)
  • 浏览器渲染截图


    image.png
  • 关于响应的截图


    响应截图.PNG
  • 关于 response.setHeader和 response.writeHead的截图


    image.png
  • 当写入response.writeHead(404,'not found')就会产生404的结果


    image.png

使用nodejs服务器路由解析

对一个网站来说,域名后面的东西就是路由,例如localhost:8080/user/123,则/user/123就是一个路由,路由的本质就是后端根据路由做对应的事情,比如用户访问这个路由,后端应该返回相应的数据。

var http = require('http')
var fs = require('fs')
http.createServer(function(req,res){
    switch (req.url) {
        case '/getWeather':
            res.end(JSON.stringify({a:1, b:2}))
            break;
        case '/user/123':
            res.end(fs.readFileSync(__dirname + '/static/user.tpl'))
            break;
        default:
            res.end(fs.readFileSync(__dirname + '/static' + req.url))
    }
}).listen(8080)

//可以实现mock数据,可以启动一个静态文件,可以处理动态路由
//一个网站请求到达后台,服务器根据对应的路由,到达相应的逻辑,响应对应的数据。

手写一个服务器

相关文章

网友评论

      本文标题:搭建服务器

      本文链接:https://www.haomeiwen.com/subject/fyyhuqtx.html