GraphQL 是一种新兴的 API 架构,它解决了 REST API 存在的一些问题,并且在最近几年受到了越来越多的关注和使用。然而,构建一个高效、可维护的 GraphQL API 并不是一件容易的事情。在本文中,我们将介绍如何使用 Prisma 和 Nexus.js 快速构建 GraphQL API,并且展示一些示例代码供参考。
什么是 Prisma?
Prisma 是一个用于数据库访问的现代化 ORM(Object-Relational Mapping)框架,它能够让你使用类型安全的 API 来与数据库进行交互。使用 Prisma,你不仅能够更加容易地使用数据库,而且还能够充分利用 GraphQL 的强类型系统。
什么是 Nexus.js?
Nexus.js 是一个用于构建类型安全的 GraphQL API 的库。使用 Nexus.js,你可以在 GraphQL 中定义类型和 API,而且它是完全类型安全的,因为它使用 TypeScript。
如何使用 Prisma 和 Nexus.js 构建 GraphQL API?
以下是一些步骤,帮助你使用 Prisma 和 Nexus.js 快速构建 GraphQL API。
步骤 1:安装 Prisma 和 Nexus.js
在您开始使用 Prisma 和 Nexus.js 构建 GraphQL API 之前,您需要安装它们。您可以在终端中使用以下命令进行安装:
npm install prisma @nexus/schema nexus
步骤 2:使用 Prisma 初始化数据库
在您开始构建 GraphQL API 之前,您需要初始化数据库。您可以使用以下命令创建一个新的 Prisma 项目:
npx prisma init myproject
然后,你需要在 Prisma schema 中定义数据库模型。以下是一个简单的例子:
// www.javascriptcn.com code example
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}步骤 3:使用 Nexus.js 定义 GraphQL API
一旦您定义了数据库模型,您可以使用 Nexus.js 来定义 GraphQL API。以下是一个简单的例子:
// www.javascriptcn.com code example
import { objectType, queryType } from '@nexus/schema'
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
const User = objectType({
name: 'User',
definition(t) {
t.model.id()
t.model.name()
t.model.email()
t.model.posts()
},
})
const Query = queryType({
definition(t) {
t.crud.user()
t.crud.users()
t.crud.post()
t.crud.posts()
},
})
const schema = makeSchema({
types: [Query, User],
outputs: {
schema: `${__dirname}/../../schema.graphql`,
typegen: `${__dirname}/generated/nexus.ts`,
},
context: () => {
return {
prisma,
}
},
})
export default schema步骤 4:启动 GraphQL API 服务器
一旦您定义了 GraphQL API,您可以使用以下命令来启动服务器:
ts-node-dev src/index.ts
然后在浏览器中访问 http://localhost:4000,您将会看到 GraphQL Playground。
总结
在本文中,我们介绍了如何使用 Prisma 和 Nexus.js 快速构建 GraphQL API。这些工具能够让您更快、更轻松地构建 GraphQL API,而且还保证了 API 的类型安全。如果您正在构建一个 GraphQL API,那么我们强烈建议您使用这些工具。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/64a3d6b948841e989404043c