Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

API patterns (Prisma ORM v7) (/docs/orm/v7/core-concepts/api-patterns)

For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending .md to its URL.

How to use Prisma ORM with REST APIs, GraphQL servers, and fullstack frameworks

Location: ORM > v7 > Core Concepts > API patterns

Prisma Client can be used to query your database from any server-side JavaScript or TypeScript application. This page covers common patterns for REST APIs, GraphQL servers, and fullstack frameworks.

When building REST APIs, use Prisma Client inside your route controllers to execute database queries.

TypeScript
// GET /feed - fetch published posts
app.get("/feed", async (req, res) => {
  const posts = await prisma.post.findMany({
    where: { published: true },
    include: { author: true },
  });
  res.json(posts);
});

// POST /post - create a post
app.post("/post", async (req, res) => {
  const { title, content, authorEmail } = req.body;
  const result = await prisma.post.create({
    data: {
      title,
      content,
      author: { connect: { email: authorEmail } },
    },
  });
  res.json(result);
});

// PUT /publish/:id - publish a post
app.put("/publish/:id", async (req, res) => {
  const post = await prisma.post.update({
    where: { id: Number(req.params.id) },
    data: { published: true },
  });
  res.json(post);
});

// DELETE /post/:id - delete a post
app.delete("/post/:id", async (req, res) => {
  const post = await prisma.post.delete({
    where: { id: Number(req.params.id) },
  });
  res.json(post);
});

Prisma ORM works with any GraphQL library. Use Prisma Client inside your resolvers to read and write data.

Library Purpose
graphql-yoga HTTP server
apollo-server HTTP server
pothos Schema builder
nexus Schema builder
type-graphql Schema builder

Prisma ORM is used inside GraphQL resolvers the same way you'd use any other ORM:

  • Queries: Read data from the database to return in the response
  • Mutations: Write data to the database (create, update, delete)

Fullstack frameworks blur server/client boundaries. Use Prisma Client in the server-side portion of your application.

TypeScript
// In getServerSideProps or API routes
export const getServerSideProps = async () => {
  const feed = await prisma.post.findMany({
    where: { published: true },
  });
  return { props: { feed } };
};

Find ready-to-run examples in the prisma-examples repository:

Example Type Description
Next.js Fullstack Next.js 15 app
Express REST Express REST API
Fastify REST Fastify REST API
GraphQL Yoga GraphQL GraphQL server with Pothos
NestJS REST NestJS REST API
Remix Fullstack Remix with actions and loaders
SvelteKit Fullstack SvelteKit app
  • Data modeling: Learn how data modeling with Prisma differs from data modeling with SQL or ORMs. Prisma uses a declarative data modeling language to describe a database schema
  • Overview: Prisma ORM supports PostgreSQL, MySQL, SQLite, MongoDB, SQL Server, CockroachDB, and serverless databases
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu