Koa-Static 该换换了吧 试试 Awesome-Static

其实仍是得按自个儿的需求来。javascript

koa-static 有啥问题么

koa-static是一个很是轻量的koa中间件,可以迅速的搭建起一个静态文件服务器,一般咱们把静态文件都放进public,而且经过相似koa-static这样的东西来将咱们的public做为静态目录,这样的话,咱们就能直接经过根路由进行访问了。html

emmmm,扯多了。回到正轨java

首先koa-static不能映射到其余的路由上,通常是跟路由,好比访问 public/main.html(假设 public 为静态目录),那么就能够经过 host:port/main.html 进行访问获得 main.html,可是有时候我不想映射到根路由,这时候,koa-static就显得力不从心了。git

第二个问题是koa-static只支持GETHEAD两个 HTTP 方法来进行访问,这在大多数场景下是有用的,可是不免会遇到一些特别的场景,好比你想用POST方法来拿到服务器上的静态文件(若是你想)。github

awesome-static

吼,因此我作了awesome-staticawesome-statickoa-static同样,都是对 koa-send的一层封装,只不过awesome-staticTypescript编写,对 VSCode 支持良好。docker

awesome-static扩充了koa-staticoptions,添加了两个字段shell

  • route
  • allowMethods

route为要映射到的路由,allowMethods是要容许的 HTTP 方法服务器

这两个字段都是可选的,route 的默认值就是根路由,allowMethods 的默认值为 HEADGET ,因此你能像使用 koa-static 同样的使用 awesome-staticapp

看一下使用方法koa

const Koa = require('koa');
const app = new Koa();
const { AwesomeStatic } = require('awesome-static');

app.use(AwesomeStatic('public'));

app.listen(8888);

public 下有一个 html 文件,下面是 public 的目录结构

public
└── main.html

在启动服务器后就能经过http://localhost:8888/main.html进行访问了

如今来配置一下 route

const Koa = require('koa');
const app = new Koa();
const { AwesomeStatic } = require('awesome-static');

app.use(AwesomeStatic('public', {
    route:"static"
}));

app.listen(8888);

配置了 routestatic 那么如今访问 main.html 就须要访问http://localhost:8888/static/main.html

若是再配置一下 allowMethods ,来设置一下容许的 HTTP 方法,让它只能经过POST 来访问

const Koa = require('koa');
const app = new Koa();
const { AwesomeStatic } = require('awesome-static');

app.use(AwesomeStatic('public', {
    route:"static",
    allowMethods:["POST"]
}));

app.listen(8888);

如今再经过 http://localhost:8888/static/main.html 就会去 404 了~

来模拟一个 POST 请求

curl http://localhost:8888/static/main.html -X POST

Output:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <h1>Main</h1>
  </body>
</html>

Github

https://github.com/HaoDaWang/awesome-static
相关文章
相关标签/搜索