跳到主要内容

RESTful-API

RESTful API

RESTful API 是一种用于构建网络应用程序的软件架构风格, 基于REST原则设计的应用程序接口,用于在客户端和服务器之间进行通信。 这里不做过多介绍,有兴趣的读者可以自行搜索。

NestJS 提供了开箱即用的 RESTful API, 我们只需要定义好路由文件,就可以直接使用。

route.js

route.js 和 page.js 文件一样,都是用来定义路由的, 不同之处在于 route.js 文件是用来定义 RESTful API,而 page.js 文件是用来定义页面UI的。

一般,我们会将所有的route.js文件放在 src/app/api 目录下,

src
├── app
│ ├── api
│ │ ├── user
| │ │ └── route.ts
│ └── layout.tsx

当我们访问 /api/user 的时候,就会自动执行 src/app/api/user/route.ts 文件内部的代码。

src/app/api/user/route.ts
export async function GET(request: Request) {}

export async function HEAD(request: Request) {}

export async function POST(request: Request) {}

export async function PUT(request: Request) {}

export async function DELETE(request: Request) {}

export async function PATCH(request: Request) {}

export async function OPTIONS(request: Request) {}

以get请求为例,

src/app/api/user/[id]/route.ts
export async function GET(request, context: { params }) {
const id = params.id
const user = await db.user.findOne({ id })
return NextResponse.json(user, { status: 200 })
}

route.js 也支持动态路由src/app/api/user/[id]/route.ts, 当用户请求 /api/user/1 的时候,就会执行上述的 GET 函数, params.id 就会等于 1, 然后可以通过 params.id 获取到用户信息,最后使用 NextResponse.json 返回给前端。

具体的NextResponse对象可以参考NextResponse