我是koa.js库的新手,需要帮助。我正在尝试使用koa制作简单的REST应用程序。
我有一个静态的html和javascript文件,我想在/
和从/api/
访问的REST API上使用。
这是我的项目目录树:
project
├── server
│ ├── node_modules
│ ├── package.json
│ └── src
│ ├── config
│ ├── resources
│ └── server.js
├── ui
│ ├── app
│ ├── bower.json
│ ├── bower_components
│ ├── dist
│ ├── node_modules
│ ├── package.json
│ └── test
这是我的来源:
var app = require('koa')();
app.use(mount('/api/places', require('../resources/places')));
// does not work
var staticKoa = require('koa')();
staticKoa.use(function *(next){
yield next;
app.use(require('koa-static')('../ui/app', {}));
});
app.use(mount('/', staticKoa));
// does not work
app.use(mount('/', function*() {
app.use(require('koa-static')('../ui/app/', {}));
}));
// does not work
app.use(mount('/', function*() {
app.use(require('koa-static')('.', {}));
}));
// GET package.json -> 404 not found
我已经尝试过
koa-static
,koa-static-folder
和koa-static-server
库,但都没有用,所以我做错了。我已经尝试过了并且可以使用,但是我没有访问我的REST api的权限:
var app = require('koa')();
app.use(require('koa-static')('../ui/app/', {}));
最佳答案
对我来说,在示例代码中遵循您的操作有点困难...
这是一个简单的示例,可以满足您的所有需求:
'use strict';
let koa = require('koa'),
send = require('koa-send'),
router = require('koa-router')(),
serve = require('koa-static');
let app = koa();
// serve files in public folder (css, js etc)
app.use(serve(__dirname + '/public'));
// rest endpoints
router.get('/api/whatever', function *(){
this.body = 'hi from get';
});
router.post('/api/whatever', function *(){
this.body = 'hi from post'
});
app.use(router.routes());
// this last middleware catches any request that isn't handled by
// koa-static or koa-router, ie your index.html in your example
app.use(function* index() {
yield send(this, __dirname + '/index.html');
});
app.listen(4000);