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