89 lines
1.9 KiB
Markdown
89 lines
1.9 KiB
Markdown
|
---
|
|||
|
title: WEB API 设计
|
|||
|
order: 2
|
|||
|
toc: menu
|
|||
|
nav:
|
|||
|
title: 核心
|
|||
|
order: 2
|
|||
|
---
|
|||
|
|
|||
|
# WEB API 设计
|
|||
|
|
|||
|
<Alert title="注意" type="warning">
|
|||
|
以下各代码片段,仅供阅读参考,可能与实际代码略有偏差。
|
|||
|
</Alert>
|
|||
|
|
|||
|
和常规的 MVC 思路不同,NocoBase 的 Server 非常简单,先来一段简单例子代码感受一下:
|
|||
|
|
|||
|
```ts
|
|||
|
import { Application } from '@nocobase/server';
|
|||
|
|
|||
|
const api = new Application({
|
|||
|
database: {},
|
|||
|
resourcer: {},
|
|||
|
});
|
|||
|
|
|||
|
// 配置数据表
|
|||
|
api.database.table({
|
|||
|
name: 'users',
|
|||
|
fields: [
|
|||
|
{ type: 'string', name: 'username' },
|
|||
|
{ type: 'password', name: 'password' },
|
|||
|
],
|
|||
|
});
|
|||
|
|
|||
|
api.listen(3000);
|
|||
|
```
|
|||
|
|
|||
|
相对应的 HTTP API:
|
|||
|
|
|||
|
```bash
|
|||
|
GET http://localhost:3000/api/users
|
|||
|
POST http://localhost:3000/api/users
|
|||
|
GET http://localhost:3000/api/users/1
|
|||
|
PUT http://localhost:3000/api/users/1
|
|||
|
DELETE http://localhost:3000/api/users/1
|
|||
|
```
|
|||
|
|
|||
|
内置了基础的 REST API,除此之外还可以自行扩展,如:
|
|||
|
|
|||
|
```ts
|
|||
|
api.resourcer.registerAction('users:login', async (ctx, next) => {
|
|||
|
// 代码省略
|
|||
|
});
|
|||
|
```
|
|||
|
|
|||
|
HTTP API 新增了扩展
|
|||
|
|
|||
|
```bash
|
|||
|
POST http://localhost:3000/api/users:login
|
|||
|
```
|
|||
|
|
|||
|
配合 SDK 就是这样的了
|
|||
|
|
|||
|
```ts
|
|||
|
// 常用的 REST API
|
|||
|
|
|||
|
// GET http://localhost:3000/api/users
|
|||
|
api.resource('users').list();
|
|||
|
// POST http://localhost:3000/api/users
|
|||
|
api.resource('users').create();
|
|||
|
// GET http://localhost:3000/api/users/1
|
|||
|
api.resource('users').get();
|
|||
|
// PUT http://localhost:3000/api/users/1
|
|||
|
api.resource('users').update();
|
|||
|
// DELETE http://localhost:3000/api/users/1
|
|||
|
api.resource('users').destroy();
|
|||
|
|
|||
|
// 扩展的非 REST 风格的 API
|
|||
|
|
|||
|
// POST http://localhost:3000/api/users:login
|
|||
|
api.resource('users').login();
|
|||
|
// POST http://localhost:3000/api/users:register
|
|||
|
api.resource('users').register();
|
|||
|
// POST http://localhost:3000/api/users:logout
|
|||
|
api.resource('users').logout();
|
|||
|
// POST http://localhost:3000/api/users:export
|
|||
|
api.resource('users').export();
|
|||
|
```
|