静态服务器(static server)

136 阅读2分钟

常规本地服务器(路由-文件一一对应)

  • 一个文件请求对应一个路由
    • 缺点:繁琐,如果请求多个文件,要设置多个路由 1635386852(1).png

完善

  • 思路:设置路由,只用一批通用的代码,就能实现只输入文件路径就能访问文件,不需要多个if else判断

初步改进

  • 声明变量x,x为被请求文件的路径
  • 设置响应写入的文件,文件的路径为public+被请求文件的路径(${x}:传x的值)
  • 但是存在BUG 1635387640(1).png

BUG1

  • 如果输入一个不存在的文件路径
  • 服务器报错

1635388379(1).png 1635388354(1).png

解决方案

  • 首先解决用户访问根补录问题(路径后面带/)
    • 如果文件路径是/,那么默认是/index.html,如果没有/,那么还是原来的路径,不需要改了
  • 解决不存在文件的路径保存问题
    • try catch,声明变量content,它是读取到的文件内容,先try,如果成功,照旧执行后续操作
    • 如果出错,(catch(error)),那么写入"文件不存在"字样,返回404状态码,这样服务器层面就不会出错 1635389072(1).png

再次优化

  • 得到请求文件的后缀

1635389532(1).png

方案

  • 首先拿到文件路径的后缀
    • 声明变量index,为文件路径里面所有"."符号的最后一个索引(第几个)
    • 声明变量suffix,为文件路径里面,从这个索引开始到最后的字符串,这样就得到了后缀(.html、.js等)
  • 声明支持的文件类型
    • fileTypes的hashMap,key为文件后缀,对应的是文件写入的格式
    • 然后请求头里面原来的特定写法(如text/html),写成hashMap里面,key为文件后缀对应的内容(比如.html对应text/html),这样只要hash表里面支持的文件类型就能调用
    • hashMap写法再加一道保底方案,在后面用||,如果文件路径不在dileType里面,那么响应头最起码是text/html 1635401718(1).png

这个静态服务器就完成了

  • 功能一: 在本地域名后加文件路径,访问当前目录下的文件
  • 功能二:可以通过访问网页,让网页调用当前目录下相关文件(html里面写入文件路径)