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}`);
});
نمونه 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-graph روشی را که برای نوشتن apis و GraphQL استفاده می کنید ذخیره می کند
resolvers
،mutations
و همه چیز را تغییر می دهد. - این
memory cost
واردات در GraphQL استheight
، در حالی که در api استlow
.
- GraphQL نوشتن بیشتر در حالی که api-graph نوشتن کمتر است
- GraphQL
{ warriors { id } }
api-graph{ warriors : [ { id } ] }
GraphQL از زبان پرس و جو گراف استفاده می کند، اما api-graph از رشته JSON بدون مقادیر استفاده می کند. - GraphQL یک زمین بازی دارد که می توانید در فرآیند توسعه از آن درخواست ارسال کنید، به این معنی که اسنادی برای API دارد، api-graph ندارد.