برنامه نویسی

GraphQL VS API Graph با 2 مثال مشابه

GraphQL به جای اینکه تمام داده ها را در اختیار من قرار دهد، این است که از API بپرسم دقیقاً به چه چیزی نیاز دارم، اما مفاهیم جدیدی مانند resolvers و mutations و کل روشی را که برای نوشتن API های خود استفاده می کنید تغییر می دهد.

api-graph همچنین به جای اینکه داده های کامل را در اختیار من قرار دهد، این است که از API بپرسم دقیقاً به چه چیزی نیاز دارم، اما without تغییر هر چیزی که برای نوشتن استفاده می کنید

ما به دو مثال می رویم که یک کار را انجام می دهند، اولی از GraphQL و دومی از api-graph استفاده می کند.

این یک مثال ساده است که از هیچ پایگاه داده ای استفاده نمی شود، تمام داده ها در حافظه ذخیره می شوند. دو مثال دارای آرایه‌ای از داده‌های جنگجو هستند که شامل شناسه و نام است، سپس سعی می‌کنیم یکی از آن دو فیلد را استخراج کنیم، اما دو کتابخانه GraphQL و api-graph.

مثال GraphQL

این مثال از Digitalocean است

import express from "express";
import cors from "cors";
import { graphqlHTTP } from "express-graphql";
import { makeExecutableSchema } from "@graphql-tools/schema";

const app = express();
const port = 4000;

// In-memory data store
const data = {
  warriors: [
    { id: "001", name: "Ahmed" },
    { id: "002", name: "Abdalla" },
  ],
};

// Schema
const typeDefs = `
type Warrior {
  id: ID!
  name: String!
}

type Query {
  warriors: [Warrior]
}
`;

// Resolver for warriors
const resolvers = {
  Query: {
    warriors: (obj, args, context) => context.warriors,
  },
};

const executableSchema = makeExecutableSchema({
  typeDefs,
  resolvers,
});

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// Entrypoint
app.use(
  "/graphql",
  graphqlHTTP({
    schema: executableSchema,
    context: data,
    graphiql: true,
  })
);

app.listen(port, () => {
  console.log(`Running a server at http://localhost:${port}`);
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

GraphQL

نمونه api-graph

import express from "express";
import cors from "cors";
import apiGraph from "api-graph";

const app = express();
const port = 4000;

// In-memory data store
const data = {
  warriors: [
    { id: "001", name: "Jaime" },
    { id: "002", name: "Jorah" },
  ],
};

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(apiGraph({ extract: "query" }));
app.post("/api-graph", (req, res) => res.json(data));
app.listen(port, () => {
  console.log(`Running a server at http://localhost:${port}`);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نمودار API

تفاوت

  • api-graph روشی را که برای نوشتن apis و GraphQL استفاده می کنید ذخیره می کند resolvers، mutations و همه چیز را تغییر می دهد.
  • این memory cost واردات در GraphQL است height، در حالی که در api است low.

هزینه واردات graphql

api-graph هزینه واردات

  • GraphQL نوشتن بیشتر در حالی که api-graph نوشتن کمتر است
  • GraphQL { warriors { id } } api-graph { warriors : [ { id } ] } GraphQL از زبان پرس و جو گراف استفاده می کند، اما api-graph از رشته JSON بدون مقادیر استفاده می کند.
  • GraphQL یک زمین بازی دارد که می توانید در فرآیند توسعه از آن درخواست ارسال کنید، به این معنی که اسنادی برای API دارد، api-graph ندارد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا