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-metadatatsconfig.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" }; }}एकीकरण
पुस्तकालय में भी
TypeScript में Jest के साथ परीक्षण
Node.js के लिए Redis क्लाइंट: ioredis — Redis के साथ काम करने का एक शक्तिशाली उपकरण
जावा में मशीन लर्निंग: डेवलपमेंट के लिए मुख्य लाइब्रेरीज़ का अवलोकन
Java में Apache Kafka के साथ काम करना: डेवलपर के लिए पूर्ण गाइड