TypeScript के लिए GraphQL लाइब्रेरी: उपकरणों की संपूर्ण मार्गदर्शिका

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript के लिए GraphQL लाइब्रेरी: API के लिए आधुनिक दृष्टिकोण

GraphQL एक API के लिए क्वेरी भाषा है जो क्लाइंट को केवल आवश्यक डेटा का अनुरोध करने की अनुमति देती है। TypeScript के साथ मिलकर, यह एक शक्तिशाली टाइप सिस्टम प्रदान करता है जो सुरक्षा और ऑटो-कम्प्लीशन सुनिश्चित करता है। pythonlib.ru पर हम TypeScript में GraphQL के साथ काम करने के लिए मुख्य लाइब्रेरी — type-graphql, साथ ही विकल्पों पर चर्चा करेंगे।



TypeScript + GraphQL क्यों?

TypeScript स्टैटिक टाइपिंग जोड़ता है, जो बड़े प्रोजेक्ट्स के लिए महत्वपूर्ण है। TypeScript क्लासेस के माध्यम से वर्णित GraphQL स्कीमा सत्य का एकमात्र स्रोत बन जाती है: कोड में परिवर्तन स्वचालित रूप से API के साथ सिंक्रोनाइज़ होते हैं। यह दस्तावेज़ीकरण और सर्वर के वास्तविक व्यवहार के बीच विसंगतियों को समाप्त करता है।



मुख्य लाइब्रेरी: TypeGraphQL

type-graphql डेकोरेटर का उपयोग करके TypeScript पर GraphQL API बनाने के लिए एक फ्रेमवर्क है। यह code-first सिद्धांत का पालन करता है: आप SDL (Schema Definition Language) के बजाय कोड के माध्यम से स्कीमा को परिभाषित करते हैं।



स्थापना

npm install type-graphql graphql reflect-metadata

tsconfig.json में जोड़ें:

{  "emitDecoratorMetadata": true,  "experimentalDecorators": true}


उदाहरण: प्रकार और रिज़ॉल्वर को परिभाषित करना

आइए एक सरल उपयोगकर्ता मॉडल और डेटा प्राप्त करने के लिए रिज़ॉल्वर बनाएं।

import { ObjectType, Field, ID, Resolver, Query } from "type-graphql";

@ObjectType()class User { @Field(() => ID) id: number;

@Field() name: string;

@Field({ nullable: true }) email?: string;}

@Resolver()class UserResolver { @Query(() => [User]) users(): User[] { return [ { id: 1, name: "अन्ना", email: "anna@example.com" }, { id: 2, name: "बोरिस", email: null } ]; }}


सर्वर का निर्माण और प्रारंभ

import { buildSchema } from "type-graphql";import { ApolloServer } from "@apollo/server";import { startStandaloneServer } from "@apollo/server/standalone";

async function main() { const schema = await buildSchema({ resolvers: [UserResolver] });

const server = new ApolloServer({ schema }); const { url } = await startStandaloneServer(server, { listen: { port: 4000 } }); console.log(`सर्वर प्रारंभ: ${url}`);}

main();


वैकल्पिक लाइब्रेरी

  • NestJS + GraphQL — लोकप्रिय फ्रेमवर्क के साथ एकीकरण। type-graphql पर आधारित @nestjs/graphql का उपयोग करता है।
  • GraphQL Nexus — डेकोरेटर के बिना code-first लाइब्रेरी, मेथड चेन का उपयोग करती है।
  • Pothos GraphQL — उत्कृष्ट TypeScript समर्थन के साथ आधुनिक code-first लाइब्रेरी।


TypeGraphQL की उन्नत सुविधाएँ

तर्क और म्यूटेशन

import { Arg, Mutation } from "type-graphql";

@Resolver()class UserResolver { @Mutation(() => User) createUser(@Arg("name") name: string, @Arg("email") email: string): User { return { id: 3, name, email }; }}


class-validator के साथ मान्यता

import { Length, IsEmail } from "class-validator";import { InputType, Field } from "type-graphql";

@InputType()class CreateUserInput { @Field() @Length(2, 30) name: string;

@Field() @IsEmail() email: string;}


middleware के माध्यम से प्राधिकरण

import { UseMiddleware } from "type-graphql";

function AuthMiddleware(): MiddlewareFn { return async ({ context }, next) => { if (!context.user) throw new Error("प्राधिकृत नहीं"); return next(); };}

@Resolver()class UserResolver { @Query(() => User) @UseMiddleware(AuthMiddleware) me(): User { return { id: 1, name: "वर्तमान उपयोगकर्ता", email: "user@example.com" }; }}


एकीकरण

अनुशंसाएँ