要创建一个Node.js/Express API以连接到React-Admin前端框架,你需要遵循以下步骤:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
app.use(bodyParser.json());
// 模拟数据存储
let items = [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' }
];
// 获取所有项目
app.get('/api/items', (req, res) => {
res.json(items);
});
// 获取单个项目
app.get('/api/items/:id', (req, res) => {
const item = items.find(i => i.id === parseInt(req.params.id));
if (!item) return res.status(404).send('Item not found');
res.json(item);
});
// 创建新项目
app.post('/api/items', (req, res) => {
const item = {
id: items.length + 1,
name: req.body.name
};
items.push(item);
res.status(201).json(item);
});
// 更新项目
app.put('/api/items/:id', (req, res) => {
const item = items.find(i => i.id === parseInt(req.params.id));
if (!item) return res.status(404).send('Item not found');
item.name = req.body.name;
res.json(item);
});
// 删除项目
app.delete('/api/items/:id', (req, res) => {
const index = items.findIndex(i => i.id === parseInt(req.params.id));
if (index === -1) return res.status(404).send('Item not found');
items.splice(index, 1);
res.status(204).send();
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
import * as React from 'react';
import { Admin, Resource } from 'react-admin';
import jsonServerProvider from 'ra-data-json-server';
import { ListGuesser, EditGuesser, ShowGuesser } from 'react-admin';
const dataProvider = jsonServerProvider('http://localhost:3000/api');
function App() {
return (
<Admin dataProvider={dataProvider}>
<Resource name="items" list={ListGuesser} edit={EditGuesser} show={ShowGuesser} />
</Admin>
);
}
export default App;
原因: 浏览器出于安全考虑,限制了不同源之间的HTTP请求。
解决方法: 在Express应用中使用cors
中间件。
const cors = require('cors');
app.use(cors());
原因: 客户端发送的数据不符合服务器端的预期格式。 解决方法: 使用Joi或Yup等库进行数据验证,并在Express路由中添加验证逻辑。
const Joi = require('joi');
const itemSchema = Joi.object({
name: Joi.string().required()
});
app.post('/api/items', (req, res) => {
const { error } = itemSchema.validate(req.body);
if (error) return res.status(400).send(error.details[0].message);
// 创建项目的逻辑...
});
通过以上步骤和示例代码,你可以成功创建一个Node.js/Express API并与React-Admin前端框架集成。
没有搜到相关的文章