GraphQL: HTTPలో RESTకి ప్రత్యామ్నాయం

GraphQL: HTTPలో RESTకి ప్రత్యామ్నాయం

అప్లికేషన్‌లను నిర్మించడం మరియు పంపిణీ చేయడం కోసం అనేక ఓపెన్ సోర్స్ నిర్మాణ ప్రమాణాలు ఉన్నాయి. REST (ప్రాతినిధ్య రాష్ట్ర బదిలీ), SOAP (సింపుల్ ఆబ్జెక్ట్ యాక్సెస్ ప్రోటోకాల్), RPC (రిమోట్ ప్రొసీడ్యూరల్ కాల్) మరియు GraphQL APIలు అత్యంత ప్రజాదరణ పొందినవి.





RESTful APIలు ఎక్కువగా ఉపయోగించే API నిర్మాణ ప్రమాణాలు. మీరు అనేక ముగింపు పాయింట్‌లతో సంక్లిష్టమైన RESTful APIలను వ్రాసినట్లయితే, అవి ఎంత క్లిష్టంగా ఉంటాయో మీరు గ్రహించి ఉండవచ్చు. ముగింపు బిందువుల మధ్య స్వల్ప తేడాలు మాత్రమే ఉన్నట్లయితే ఇది ప్రత్యేకంగా వర్తిస్తుంది.





రోజు యొక్క వీడియోను తయారు చేయండి

RESTful APIలు నిర్దిష్ట డేటాను ఎంచుకునేంత ఫ్లెక్సిబుల్‌గా లేనందున మీరు డేటాను పొందడంలో సమస్యలను కూడా ఎదుర్కోవచ్చు. RESTful APIల యొక్క ఈ సమస్యలను GraphQL పరిష్కరిస్తుంది.





GraphQL అంటే ఏమిటి?

GraphQL (గ్రాఫ్ క్వెరీ లాంగ్వేజ్) అనేది APIలను రూపొందించడానికి ఒక ప్రశ్న భాష మరియు రన్‌టైమ్. REST APIల మాదిరిగా కాకుండా, డేటాను వినియోగించుకోవడానికి అనేక ముగింపు పాయింట్‌లు ఉంటాయి, GraphQL APIలు ఒక ఎంట్రీ పాయింట్‌ను కలిగి ఉంటాయి. మీరు ప్రశ్నలలో వివరించడం ద్వారా నిర్దిష్ట డేటాను పొందవచ్చు.

ది GraphQL స్పెసిఫికేషన్ ప్రశ్న భాష మరియు GraphQL సర్వర్లు ఎలా పనిచేస్తాయో నిర్వచిస్తుంది. మీరు పైథాన్ నుండి సర్వర్ సైడ్ భాషలలో GraphQL APIలను నిర్మించవచ్చు మరియు వినియోగించవచ్చు జావాస్క్రిప్ట్ , మరియు HTTPకి మద్దతిచ్చే ఏదైనా భాష.



మెటా 2012లో హెచ్‌టిటిపిలో నిర్మించడానికి RESTకి ప్రత్యామ్నాయంగా గ్రాఫ్‌క్యూఎల్‌ని నిర్మించింది. వారు 2015లో ఓపెన్ సోర్స్ స్టాండర్డ్‌గా GraphQLని విడుదల చేశారు. నేడు, GraphQL ఫౌండేషన్ గ్రాఫ్‌క్యూఎల్ స్పెసిఫికేషన్ అభివృద్ధిని పర్యవేక్షిస్తుంది.

GraphQL చాలా కొత్తది, తక్కువ స్వీకరణతో మరియు దానిని ఉపయోగించడానికి దాచిన ఖర్చులు ఉన్నాయి. గ్రాఫ్‌క్యూఎల్ APIలను నిర్మించడం అనవసరంగా సంక్లిష్టంగా ఉంటుంది, ప్రత్యేకించి కొన్ని ముగింపు పాయింట్‌లతో కూడిన చిన్న ప్రాజెక్ట్‌ల కోసం.





మ్యాక్‌బుక్ కొనడానికి ఉత్తమ మార్గం

అలాగే, అన్ని GraphQL అభ్యర్థనలు అభ్యర్థన స్థితితో సంబంధం లేకుండా చివరికి 200 స్థితి కోడ్‌ని అందిస్తాయి.

GraphQL ఎలా పని చేస్తుంది?

  గ్రాఫ్‌క్యూఎల్'s functions and syntax

కాకుండా REST, ఇది వనరు-ఆధారితమైనది , డేటాతో పరస్పర చర్య చేయడానికి మీరు డేటా గురించి గ్రాఫ్‌గా ఆలోచించడం GraphQLకి అవసరం. మీరు డేటా యొక్క నిర్మాణాన్ని పేర్కొనవచ్చు మరియు HTTP ద్వారా APIతో పరస్పర చర్య చేయడానికి స్పెసిఫికేషన్ బలమైన ప్రశ్న ఇంటర్‌ఫేస్‌ను అందిస్తుంది. మీరు వీటిని బట్టి వివిధ ఫీచర్‌లను ఉపయోగించగలరు GraphQL ప్యాకేజీ లేదా లైబ్రరీ మీరు ఉపయోగించడానికి ఎంచుకోండి.





GraphQL స్కీమాలు అభ్యర్థించదగిన వస్తువు మరియు దాని అందుబాటులో ఉన్న ఫీల్డ్‌లను నిర్వచించే ఆబ్జెక్ట్ రకాలను కలిగి ఉంటాయి. API ప్రశ్నలు మరియు ఉత్పరివర్తనాలపై, GraphQL ప్యాకేజీ ప్రశ్నలను ధృవీకరిస్తుంది మరియు పేర్కొన్న హ్యాండ్లర్ ఫంక్షన్‌ల (పరిష్కారాలు) ఆధారంగా ప్రశ్నలను అమలు చేస్తుంది.

మీరు GraphQL ఎందుకు ఉపయోగించాలి?

REST అనేది ఉపయోగించడానికి సులభమైన ప్రమాణం మరియు చాలా ప్రోగ్రామింగ్ భాషలలో RESTful APIలను వేగంగా రూపొందించడానికి సాధనాలు ఉన్నాయి. అయినప్పటికీ, RESTful APIలను నిర్మించడంలో మరియు వినియోగించడంలో అనేక సమస్యలు ఉన్నాయి.

డెవలపర్లు కొన్ని వినియోగ సందర్భాలలో GraphQLని ఇష్టపడేలా చేసే RESTతో ఉన్న కొన్ని సమస్యలు ఇక్కడ ఉన్నాయి.

అసమర్థ డేటా పొందడం

RESTful APIలు ఎండ్‌పాయింట్ స్పెసిఫికేషన్ ఆధారంగా డేటాను ప్రసారం చేస్తాయి. ఎండ్‌పాయింట్ యొక్క హ్యాండ్లర్ ఫంక్షన్‌లో హార్డ్ కోడ్ చేయబడిన దానికంటే మించి డేటాను తిరిగి పొందగలిగేంతగా అవి అనువైనవి కావు.

విండోస్ 10 బ్యాడ్_సిస్టమ్_కాన్ఫిగ్_ఇన్ఫో బూట్ అవ్వదు

కాల్‌పై డేటా జాబితాను ఎండ్‌పాయింట్ అందించిందని అనుకుందాం మరియు మీరు ఫీల్డ్‌ల కోసం విలువలు లేదా ప్రమాణాలను పేర్కొనాలి. అలాంటప్పుడు, డెవలపర్ ఒక ముగింపు బిందువును సృష్టించాలి మరియు డేటాను తిరిగి ఇవ్వడానికి వ్యాపార లాజిక్‌ను నిర్వచించాలి. మీరు విలువైన వనరును మాన్యువల్‌గా అన్వయించవచ్చు, ఇది చివరికి ఎక్కువ సమయం పడుతుంది.

మీరు ప్రమాణాలు మరియు స్పెసిఫికేషన్‌ల ఆధారంగా డేటాను ఫ్లెక్సిబుల్‌గా తిరిగి ఇవ్వడానికి APIలను ప్రశ్నించవచ్చు కాబట్టి GraphQL అసమర్థ డేటాను పొందే సమస్యను పరిష్కరిస్తుంది.

GraphQL APIలు ఇంటరాక్టివ్‌గా ఉంటాయి; మీరు సులభంగా, చదవగలిగే సింటాక్స్‌లో తిరిగి పొందవలసిన డేటాను పేర్కొనవచ్చు.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

పైన ఉన్న GraphQL ప్రశ్న a వినియోగదారు ఎంట్రీల కోసం స్కీమా వయస్సు ఫీల్డ్ 89. క్వెరీలో ఎంట్రీల కోసం ఎంబెడెడ్ క్వెరీ ఉంది సజీవంగా ఫీల్డ్ మూల్యాంకనం చేస్తుంది నిజం . ఇది స్కీమా నుండి పేరు, బయో మరియు జాతీయత ఫీల్డ్‌లను అందిస్తుంది.

వేగవంతమైన అభివృద్ధి

RESTని ఉపయోగించడం కంటే GraphQL APIలను నిర్మించడం మరియు వినియోగించడం చాలా సులభం, ముఖ్యంగా ప్రాజెక్ట్ పరిమాణం పెరిగేకొద్దీ. అభివృద్ధి దశలో, RESTful APIలను అభివృద్ధి చేస్తున్నప్పుడు మీరు అనేక మార్గాలు మరియు హ్యాండ్లర్ ఫంక్షన్‌లను అభివృద్ధి చేయవలసిన అవసరం లేదు. GraphQL APIలను వినియోగించడం RESTful APIల వలె దుర్భరమైనది కాదు.

RESTలో, ఒకే ఎండ్‌పాయింట్ ఉన్న గ్రాఫ్‌క్యూఎల్‌లా కాకుండా వేర్వేరు ఎండ్‌పాయింట్‌లు విభిన్న వనరులకు యాక్సెస్‌ను ఇస్తాయి. ఇది ఫ్లెక్సిబిలిటీ మరియు పనితీరును అందిస్తుంది, మరియు ప్రశ్నలు వివిధ రిసల్వర్ ఫంక్షన్‌లను పిలుస్తాయి.

గ్రాఫ్‌క్యూఎల్ స్కీమా డెఫినిషన్ లాంగ్వేజ్

GraphQL స్కీమా డెఫినిషన్ లాంగ్వేజ్ (SDL) GraphQL సేవల కోసం స్కీమాలను నిర్దేశిస్తుంది.

GraphQL SDL సింటాక్స్ చదవడం మరియు అర్థం చేసుకోవడం సులభం. మీరు ఫైల్‌లో మీ స్కీమా నిర్మాణాన్ని పేర్కొంటారు .graphql లేదా .graphqls పొడిగింపు.

ల్యాప్‌టాప్‌తో చేయాల్సిన పనులు
type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

ఎగువన ఉన్న GraphQL కోడ్ అనేది అభ్యర్థనల కోసం API యొక్క నిర్మాణాన్ని నిర్వచించే GraphQL API కోసం స్కీమా. స్కీమా API కోసం CRUD కార్యాచరణను నిర్వచిస్తుంది.

క్లయింట్ వైపు, స్కీమా యొక్క నిర్మాణం మరియు క్లయింట్ యొక్క డేటా లేదా ఆపరేషన్ ఆధారంగా, క్లయింట్ ఒక ప్రశ్న (RESTలో పొందండి లేదా తొలగించండి) లేదా ఎ మ్యుటేషన్ (PUT లేదా POST).

అని ప్రశ్నించడానికి ఇక్కడ ఒక ఉదాహరణ ఉంది మానవుడు స్కీమా.

query Human { 
name
age
}

పై ప్రశ్న మానవ స్కీమాలను తిరిగి అందిస్తుంది పేరు మరియు వయస్సు ఫీల్డ్ డేటా.

GraphQL ఉత్పరివర్తనలు ప్రశ్నలకు విరుద్ధంగా చాలా భిన్నమైన వాక్యనిర్మాణాన్ని కలిగి ఉంటాయి. మ్యుటేషన్ ఆపరేషన్ యొక్క ఉదాహరణ ఇక్కడ ఉంది మానవుడు స్కీమా.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

మ్యుటేషన్ కోడ్ ఇన్‌పుట్‌లు పేరు మరియు వయస్సు క్లయింట్‌కు ఫీల్డ్‌లు మరియు ఫీల్డ్‌ల నుండి డేటాను తిరిగి అందిస్తుంది.

మీరు మీ GraphQL APIని నిర్మిస్తున్నప్పుడు నిలకడ కోసం మీకు డేటా స్టోర్ అవసరం. REST మరియు చాలా HTTP-ఆధారిత వెబ్ ఆర్కిటెక్చర్ లాగా, GraphQL స్థితిలేనిది మరియు మీరు మీ యాప్ కోసం ఏదైనా డేటా స్టోర్ లేదా డేటాబేస్‌ని ఉపయోగించవచ్చు.

GraphQL APIని రూపొందించడం

  GraphQL మద్దతు ఉన్న భాషలు

GraphQL అనేది ఒక స్పెసిఫికేషన్ మరియు మీరు అత్యంత ప్రజాదరణ పొందిన సర్వర్ సైడ్ భాషలలో GraphQLని నిర్మించవచ్చు. మీరు మీ ప్రాజెక్ట్ కోసం అవసరమైన ఫీచర్లతో కూడిన లైబ్రరీని కనుగొనవలసి ఉంటుంది.

GraphQL లైబ్రరీని ఎంచుకున్నప్పుడు, మీరు అన్ని GraphQL రకాలు మరియు కార్యకలాపాలకు మద్దతు ఇచ్చే ఫీచర్-రిచ్ లైబ్రరీని ఉపయోగించాలనుకుంటున్నారు. చాలా లైబ్రరీలు స్కీమా-ఫస్ట్ లేదా కోడ్-ఫస్ట్ విధానాన్ని తీసుకుంటాయి. మునుపటిలో, మీరు గ్రాఫ్‌క్యూఎల్ స్కీమాను నిర్వచించారు మరియు లైబ్రరీ పరిష్కర్తలు మరియు బాయిలర్‌ప్లేట్ కోడ్‌ను ఉత్పత్తి చేస్తుంది. తరువాతి కోసం, మీరు స్కీమాను నిర్వచించకుండానే పరిష్కారాలను హార్డ్-కోడ్ చేస్తారు.

GraphQL స్వీకరణను పొందుతోంది

GraphQL ప్రారంభం నుండి, డెవలపర్లు మరియు కంపెనీలు దాని వినియోగాన్ని సులభతరం చేయడానికి సాధనాలను విడుదల చేశాయి. ఇవి చిన్న మరియు మధ్య తరహా ప్రాజెక్టుల అభివృద్ధి సమయాన్ని తగ్గించగలవు.

మీరు మరింత తెలుసుకోవడానికి ఓపెన్ సోర్స్ GraphQL క్లయింట్‌లు, GraphQL డాక్యుమెంటేషన్ మరియు దాని స్పెసిఫికేషన్‌లను చూడవచ్చు.