我是koa2的新手,我试图用koa2获取JSON文件的内容
app.use( async ( ctx ) => {
let url = ctx.request.url;
if (url == "list") {
let res = ctx.request.get('http://domain/hello.json');
ctx.body = res.body;
}
})
JSON文件hello.json
如下所示:
{"da": "1212", "dad": "12addsf12"}
我希望路由/list
返回hello.json
的内容,但响应为空。我该怎么办?
更新: 更改以下代码行:
let res = ctx.request.get('http://domain/hello.json');
ctx.body = res.body;
为:
let res = ctx.get('http://domain/hello.json');
ctx.body = res;
您应该立即获取内容。
答案 0 :(得分:0)
Koa本身不支持路由,只有中间件,你需要有一个路由器中间件,试试koa-router。
您的应用看起来像
const route = require('koa-route')
app.use(route.get('/list', ctx => {
// Route handling logic
});
另请注意,ctx.get
是ctx.request.get
的别名,它返回标头信息。
答案 1 :(得分:0)
这可能不是Koa的做事方式,但这是我为我尝试和工作的东西(像我这样的新手的完整代码):
class ElementCRDN extends React.Component {
constructor(props) {
super(props);
this.handleCreation = this.handleCreation.bind(this);
this.handleInput = this.handleInput.bind(this);
this.state = {
data: [], // the data retrieved from the server
pages: -1,
};
}
handleCreation(event) {
Axios.post('/createElement', {
// data
}).then(() => {
// Ask for reload
});
event.preventDefault();
}
render() {
<form onSubmit={this.handleCreation}>
// input to create object
</form>
<ReactTable
data={this.state.data}
pages={this.state.pages}
loading={this.state.loading}
manual
columns={columns}
onFetchData={(state) => { // function to retrieve the data
this.setState({ loading: true });
Axios.post('/listElements', {
page: state.page,
pageSize: state.pageSize,
sorted: state.sorted,
filtered: state.filtered,
}).then((res) => {
this.setState({
data: res.data,
loading: false,
});
});
}}
/>
}
而且,正如source code指出的那样,Koa本身并不支持路由。您需要使用一些路由中间件。