常规本地服务器(路由-文件一一对应)
- 一个文件请求对应一个路由
- 缺点:繁琐,如果请求多个文件,要设置多个路由
- 缺点:繁琐,如果请求多个文件,要设置多个路由
完善
- 思路:设置路由,只用一批通用的代码,就能实现只输入文件路径就能访问文件,不需要多个if else判断
初步改进
- 声明变量x,x为被请求文件的路径
- 设置响应写入的文件,文件的路径为public+被请求文件的路径(${x}:传x的值)
- 但是存在BUG
BUG1
- 如果输入一个不存在的文件路径
- 服务器报错
解决方案
- 首先解决用户访问根补录问题(路径后面带/)
- 如果文件路径是/,那么默认是/index.html,如果没有/,那么还是原来的路径,不需要改了
- 解决不存在文件的路径保存问题
- try catch,声明变量content,它是读取到的文件内容,先try,如果成功,照旧执行后续操作
- 如果出错,(catch(error)),那么写入"文件不存在"字样,返回404状态码,这样服务器层面就不会出错
再次优化
- 得到请求文件的后缀
方案
- 首先拿到文件路径的后缀
- 声明变量index,为文件路径里面所有"."符号的最后一个索引(第几个)
- 声明变量suffix,为文件路径里面,从这个索引开始到最后的字符串,这样就得到了后缀(.html、.js等)
- 声明支持的文件类型
- fileTypes的hashMap,key为文件后缀,对应的是文件写入的格式
- 然后请求头里面原来的特定写法(如text/html),写成hashMap里面,key为文件后缀对应的内容(比如.html对应text/html),这样只要hash表里面支持的文件类型就能调用
- hashMap写法再加一道保底方案,在后面用||,如果文件路径不在dileType里面,那么响应头最起码是text/html
这个静态服务器就完成了
- 功能一: 在本地域名后加文件路径,访问当前目录下的文件
- 功能二:可以通过访问网页,让网页调用当前目录下相关文件(html里面写入文件路径)