CodeGym /జావా బ్లాగ్ /యాదృచ్ఛికంగా /REST యొక్క అవలోకనం. పార్ట్ 2: క్లయింట్ మరియు సర్వర్ మధ్య ...
John Squirrels
స్థాయి
San Francisco

REST యొక్క అవలోకనం. పార్ట్ 2: క్లయింట్ మరియు సర్వర్ మధ్య కమ్యూనికేషన్

సమూహంలో ప్రచురించబడింది
REST యొక్క అవలోకనం. పార్ట్ 1: REST అంటే ఏమిటి? ఈ భాగంలో, క్లయింట్ మరియు సర్వర్ మధ్య కమ్యూనికేషన్ ఎలా జరుగుతుందో మేము లోతుగా పరిశీలిస్తాము. అలాగే, మేము కొత్త నిబంధనలను వెలికితీస్తాము మరియు వాటిని వివరిస్తాము. REST యొక్క అవలోకనం.  పార్ట్ 2: క్లయింట్ మరియు సర్వర్ మధ్య కమ్యూనికేషన్ - 1ప్రతిదీ స్పష్టంగా ఉందని నిర్ధారించుకోవడానికి, మేము RESTful అప్లికేషన్‌ను ఉదాహరణగా ఉపయోగించి క్లయింట్-సర్వర్ కమ్యూనికేషన్‌ను విశ్లేషిస్తాము. కస్టమర్‌లు మరియు వారి ఆర్డర్‌ల గురించి సమాచారాన్ని నిల్వ చేసే వెబ్ అప్లికేషన్‌ను మేము అభివృద్ధి చేస్తున్నాము అనుకుందాం. మరో మాటలో చెప్పాలంటే, మా సిస్టమ్ నిర్దిష్ట ఎంటిటీలపై కార్యకలాపాలను నిర్వహించగలదు: వాటిని సృష్టించడం, సవరించడం మరియు తొలగించడం మరియు వాటి గురించి సమాచారాన్ని ప్రదర్శించడం. ఈ ఎంటిటీలు ఇలా ఉంటాయి:
  • వినియోగదారులు (కస్టమర్లు)
  • ఆర్డర్‌లు (కస్టమర్ ఆర్డర్‌లు)
  • వస్తువులు (ఉత్పత్తులు)
RESTful ఆర్కిటెక్చర్‌లో, క్లయింట్‌లు డేటాను తిరిగి పొందడానికి లేదా సవరించడానికి సర్వర్‌కు అభ్యర్థనలను పంపుతారు, ఆపై సర్వర్లు వారి అభ్యర్థనలకు క్లయింట్‌ల ప్రతిస్పందనలను పంపుతాయి.

అభ్యర్థనలు

క్లయింట్ అభ్యర్థనలు దాదాపు ఎల్లప్పుడూ HTTP ప్రోటోకాల్‌ని ఉపయోగించి చేయబడతాయి. సాధారణంగా, HTTP అభ్యర్థనలు అనేక భాగాలను కలిగి ఉంటాయి:
  • HTTP పద్ధతి
  • శీర్షిక
  • URI
  • అభ్యర్థన శరీరం
క్రింద మేము ప్రతి భాగాన్ని మరింత వివరంగా పరిశీలిస్తాము.

URIలు మరియు వనరులు

క్లయింట్లు అభ్యర్థనల ద్వారా స్వీకరించే లేదా సవరించే డేటాను వనరులు అంటారు. క్లయింట్-సర్వర్ కమ్యూనికేషన్ అనేది వనరులను తారుమారు చేయడం. RESTలో, వనరులు అంటే మీరు ఏదైనా పేరు పెట్టవచ్చు. ఒక రకంగా చెప్పాలంటే, అవి జావాలోని క్లాస్‌ల వంటివి. జావాలో, మనం దేనికైనా క్లాస్‌ని సృష్టించవచ్చు. కాబట్టి RESTలో, వనరు ఏదైనా కావచ్చు: వినియోగదారు, పత్రం, నివేదిక, ఆర్డర్. ఇది ఏదైనా ఎంటిటీ యొక్క సారాంశం కావచ్చు లేదా ఏదైనా నిర్దిష్టమైనది కావచ్చు, ఉదాహరణకు, చిత్రం, వీడియో, యానిమేషన్ లేదా PDF ఫైల్. మా ఉదాహరణలో, మాకు 3 వనరులు ఉన్నాయి:
  • వినియోగదారులు (కస్టమర్లు)
  • ఆర్డర్‌లు (కస్టమర్ ఆర్డర్‌లు)
  • వస్తువులు (ఉత్పత్తులు)
క్లయింట్లు ఎండ్‌పాయింట్‌లుగా పిలువబడే వనరుల స్థానాలకు అభ్యర్థనలను పంపుతారు. సరళంగా చెప్పాలంటే, ఎండ్ పాయింట్ అనేది నెట్‌వర్క్‌లోని చిరునామా లాంటిది. లోతుగా డైవింగ్, మేము ఒక ముగింపు పాయింట్ URI అని చెప్పవచ్చు, అనగా నైరూప్య లేదా భౌతిక వనరును గుర్తించే అక్షరాల క్రమం. యూనిఫాం రిసోర్స్ ఐడెంటిఫైయర్ (URI) కొన్నిసార్లు ఎండ్‌పాయింట్ లేదా URIని పాత్ అంటారు, అంటే వనరుకి మార్గం. ఈ కథనం యొక్క ప్రయోజనాల కోసం, మేము URI అనే పదాన్ని ఉపయోగిస్తాము. ప్రతి నిర్దిష్ట వనరు తప్పనిసరిగా ప్రత్యేకమైన URIని కలిగి ఉండాలి. ప్రతి వనరు ఎల్లప్పుడూ దాని స్వంత URIని కలిగి ఉండేలా చూసుకోవడానికి సర్వర్ డెవలపర్ బాధ్యత వహిస్తాడు. మా ఉదాహరణలో, మేము డెవలపర్లు, కాబట్టి మనకు తెలిసిన విధంగా మేము చేస్తాము. రిలేషనల్ డేటాబేస్‌లో సంఖ్యాపరమైన ఐడెంటిఫైయర్‌లను ప్రాథమిక కీలుగా కేటాయించడం తరచుగా ఆచారం అయినట్లే, ప్రతి వనరు కూడా RESTలో దాని స్వంత IDని కలిగి ఉంటుంది. RESTలోని రిసోర్స్ ID తరచుగా రిసోర్స్ గురించి సమాచారాన్ని నిల్వ చేసే డేటాబేస్‌లోని రికార్డ్ యొక్క IDతో సరిపోలుతుంది. REST URIలు సాధారణంగా కొన్ని వనరులను వివరించే నామవాచకం యొక్క బహువచన రూపంతో ప్రారంభమవుతాయి. ఉదాహరణకి, "
  • /కస్టమర్లు — అందుబాటులో ఉన్న వినియోగదారులందరి URI
  • /కస్టమర్లు/23 — నిర్దిష్ట కస్టమర్ యొక్క URI, అంటే ID=23 ఉన్న కస్టమర్
  • /కస్టమర్లు/4 — నిర్దిష్ట కస్టమర్ యొక్క URI, అంటే ID=4 ఉన్న కస్టమర్.
అయితే అంతే కాదు. మేము ఆర్డర్‌లను జోడించడం ద్వారా URIని పొడిగించవచ్చు:
  • /కస్టమర్లు/4/ఆర్డర్లు — కస్టమర్ నం. 4 చేసిన అన్ని ఆర్డర్‌ల URI
  • /కస్టమర్లు/1/ఆర్డర్లు/12 — కస్టమర్ నం. 1 చేసిన ఆర్డర్ నంబర్ 12 యొక్క URI.
మేము మరిన్ని ఉత్పత్తులను జోడించడం ద్వారా విస్తరణను కొనసాగిస్తే, మేము పొందుతాము:
  • /కస్టమర్లు/1/ఆర్డర్లు/12/ఐటెమ్స్ — కస్టమర్ నం. 1 చేసిన ఆర్డర్ నెం. 12లోని అన్ని ఉత్పత్తుల జాబితా యొక్క URI.
మేము గూడు స్థాయిలను జోడించినప్పుడు, ముఖ్యమైన విషయం ఏమిటంటే URIలను సహజంగా మార్చడం.

HTTP పద్ధతి

HTTP పద్ధతి అనేది ఏదైనా అక్షరాల క్రమం (నియంత్రణ అక్షరాలు మరియు డీలిమిటర్‌లు మినహా), ఇది వనరుపై నిర్వహించబడుతున్న ప్రధాన ఆపరేషన్‌ను సూచిస్తుంది. అనేక సాధారణ HTTP పద్ధతులు ఉన్నాయి. మేము RESTful సేవల్లో ఎక్కువగా ఉపయోగించే వాటిని జాబితా చేస్తాము:
  • పొందండి — నిర్దిష్ట వనరు గురించి (దాని ID ద్వారా) లేదా వనరుల సేకరణ గురించి సమాచారాన్ని పొందండి
  • POST - కొత్త వనరును సృష్టించండి
  • పుట్ - వనరును మార్చండి (దాని ID ద్వారా)
  • తొలగించు - వనరును తొలగించండి (దాని ID ద్వారా)

శీర్షికలు

అభ్యర్థనలు, అలాగే ప్రతిస్పందనలు, HTTP హెడర్‌లను కలిగి ఉంటాయి. వారు అభ్యర్థన (లేదా ప్రతిస్పందన) గురించి అదనపు సమాచారాన్ని తెలియజేస్తారు. శీర్షికలు కీ-విలువ జంటలు. మీరు వికీపీడియాలో అత్యంత సాధారణ శీర్షికల జాబితాను వీక్షించవచ్చు . REST కొరకు, క్లయింట్లు తరచుగా సర్వర్‌కి అభ్యర్థనలలో "అంగీకరించు" శీర్షికను పంపుతారు. క్లయింట్ ఏ ఫార్మాట్‌లో ప్రతిస్పందనను అందుకోవాలనుకుంటున్నారో సర్వర్‌కు తెలియజేయడానికి ఈ హెడర్ అవసరం. MIME రకాల జాబితాలో వివిధ ఫార్మాట్‌లు ఇవ్వబడ్డాయి. MIME (మల్టీపర్పస్ ఇంటర్నెట్ మెయిల్ ఎక్స్‌టెన్షన్స్) అనేది సమాచారాన్ని ఎన్‌కోడింగ్ చేయడానికి మరియు సందేశాలను ఫార్మాటింగ్ చేయడానికి ఒక స్పెసిఫికేషన్, కాబట్టి వాటిని ఇంటర్నెట్ ద్వారా పంపవచ్చు. ప్రతి MIME రకం స్లాష్ ద్వారా వేరు చేయబడిన రెండు భాగాలను కలిగి ఉంటుంది - ఒక రకం మరియు ఉప రకం. వివిధ రకాల ఫైల్‌ల కోసం MIME రకాల ఉదాహరణలు:
  • text — text/plain, text/css, text/html
  • చిత్రం — చిత్రం/png, చిత్రం/jpeg, చిత్రం/gif
  • ఆడియో — ఆడియో/wav, ఆడియో/mpeg
  • వీడియో — వీడియో/mp4, వీడియో/ogg
  • అప్లికేషన్ — అప్లికేషన్/json, అప్లికేషన్/pdf, అప్లికేషన్/xml, అప్లికేషన్/ఆక్టెట్-స్ట్రీమ్
ఉదాహరణకు, అభ్యర్థనలో ఇలా హెడర్ ఉండవచ్చు:

Accept:application/json
క్లయింట్ JSON ఆకృతిలో ప్రతిస్పందనను అందుకోవాలని ఆశిస్తున్నట్లు ఈ హెడర్ సర్వర్‌కు తెలియజేస్తుంది.

శరీరాన్ని అభ్యర్థించండి

క్లయింట్ సర్వర్‌కి పంపిన సందేశం ఇది. అభ్యర్థనకు బాడీ ఉందా లేదా అనేది HTTP అభ్యర్థన రకంపై ఆధారపడి ఉంటుంది. ఉదాహరణకు, GET మరియు DELETE అభ్యర్థనలు సాధారణంగా ఏ అభ్యర్థన అంశాన్ని కలిగి ఉండవు. కానీ PUT మరియు POST అభ్యర్థనలు చేయవచ్చు - ఇది అభ్యర్థన యొక్క ప్రయోజనంపై ఆధారపడి ఉంటుంది. అన్నింటికంటే, IDని ఉపయోగించి డేటాను స్వీకరించడానికి మరియు/లేదా తొలగించడానికి (ఇది URLలో పాస్ చేయబడింది), మీరు సర్వర్‌కు అదనపు డేటాను పంపాల్సిన అవసరం లేదు. కానీ కొత్త వనరును సృష్టించడానికి (POST అభ్యర్థన ద్వారా), మీరు వనరును పంపాలి. ఇప్పటికే ఉన్న వనరును సవరించడానికి ఇది వర్తిస్తుంది. RESTలో, అభ్యర్థన అంశం చాలా తరచుగా XML లేదా JSON ఆకృతిలో పంపబడుతుంది. JSON ఫార్మాట్ సర్వసాధారణం. కొత్త వనరును సృష్టించడానికి సర్వర్‌కు అభ్యర్థనను పంపాలనుకుంటున్నాము. మీరు మరచిపోకపోతే, మేము కస్టమర్ ఆర్డర్‌లను నిర్వహించే అప్లికేషన్ యొక్క ఉదాహరణను పరిగణించాము. మేము కొత్త కస్టమర్‌ని సృష్టించాలనుకుంటున్నాము. మా విషయంలో, మేము క్రింది కస్టమర్ సమాచారాన్ని నిల్వ చేస్తాము: పేరు, ఇమెయిల్, ఫోన్ నంబర్. అప్పుడు అభ్యర్థన యొక్క ప్రధాన భాగం క్రింది JSON కావచ్చు:

{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+1 (222) 333-4444"
}

కలిసి అభ్యర్థనలను ఉంచడం

కాబట్టి, క్లయింట్ అభ్యర్థనలో ఏమి ఉండవచ్చో మేము పరిశీలించాము. మేము ఇప్పుడు వివరణలతో పాటు అభ్యర్థనలకు కొన్ని ఉదాహరణలను ఇస్తాము
అభ్యర్థన వివరణ

GET /customers/23
Accept : application/json, application/xml
JSON లేదా XML ఆకృతిలో కస్టమర్ నంబర్ 23 గురించి సమాచారాన్ని పొందండి

POST /customers
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+1 (222) 333-4444"
}
కింది ఫీల్డ్‌లతో కొత్త కస్టమర్‌ని సృష్టించండి:
పేరు — అమిగో
ఇమెయిల్ — amigo@jr.com
టెలిఫోన్ నంబర్ — +1 (222) 333-4444

PUT /customers/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+86 (868) 686-8686"
}
కస్టమర్ నంబర్ 1ని ఈ క్రింది విధంగా సవరించండి:
పేరు — బెన్
ఇమెయిల్ — bigben@jr.com
టెలిఫోన్ నంబర్ — +86 (868) 686-8686

DELETE /customers/12/orders/6
సిస్టమ్ నుండి కస్టమర్ నంబర్ 12 చేసిన ఆర్డర్ నంబర్ 6ని తొలగించండి

ప్రతిస్పందనలు

సర్వర్ ప్రతిస్పందనల గురించి కొన్ని మాటలు చెప్పండి. ప్రతిస్పందన సాధారణంగా క్రింది భాగాలను కలిగి ఉంటుంది:
  • ప్రతిస్పందన కోడ్
  • శీర్షికలు
  • ప్రతిస్పందన శరీరం
సాధారణంగా, ప్రతిస్పందన శీర్షికలు అభ్యర్థన శీర్షికల నుండి చాలా భిన్నంగా ఉండవు. అదనంగా, కొన్ని శీర్షికలు ప్రతిస్పందనలు మరియు అభ్యర్థనలు రెండింటిలోనూ ఉపయోగించబడతాయి. అభ్యర్థన శరీరానికి సంబంధించి ప్రతిదీ కూడా స్పష్టంగా ఉందని నేను భావిస్తున్నాను. శరీరం తరచుగా క్లయింట్ అభ్యర్థించిన సమాచారాన్ని అందిస్తుంది. GET అభ్యర్థనలకు ప్రతిస్పందనగా అందించబడిన సమాచారం JSON ఆకృతిలో కూడా ఉండవచ్చు. కానీ చివరి భాగం కొంచెం ఆసక్తికరంగా ఉంటుంది.

HTTP ప్రతిస్పందన కోడ్‌లు

HTTP ప్రతిస్పందన కోడ్‌లను మరింత వివరంగా పరిశీలిద్దాం. HTTP స్టేటస్ కోడ్ అనేది HTTP ప్రోటోకాల్ ద్వారా చేసిన అభ్యర్థనలకు సర్వర్ ప్రతిస్పందన యొక్క మొదటి లైన్‌లో భాగం. ఇది మూడు దశాంశ అంకెలతో కూడిన పూర్ణాంకం. మొదటి అంకె ప్రతిస్పందన స్థితి కోడ్ యొక్క తరగతిని సూచిస్తుంది. ప్రతిస్పందన కోడ్ సాధారణంగా ఆంగ్లంలో వివరణాత్మక పదబంధాన్ని అనుసరించి, ఖాళీతో వేరు చేయబడుతుంది. ప్రతిస్పందన కోసం ఈ పదబంధం మానవులు చదవగలిగే కారణం. ఉదాహరణలు:
  • 201 సృష్టించబడింది
  • 401 అనధికార
  • 507 తగినంత నిల్వ లేదు
ప్రతిస్పందన కోడ్ అభ్యర్థన యొక్క ఫలితాన్ని క్లయింట్‌కు తెలియజేస్తుంది మరియు తదుపరి ఏ చర్యలు తీసుకోవాలో నిర్ణయించడానికి దానిని అనుమతిస్తుంది. ప్రతిస్పందన సంకేతాలు అనేక తరగతులు లేదా సమూహాలుగా విభజించబడ్డాయి:
  • 1XX - సమాచార
  • 2XX — క్లయింట్ అభ్యర్థన విజయవంతంగా స్వీకరించబడి, ప్రాసెస్ చేయబడిందని ఈ కోడ్‌లు సూచిస్తున్నాయి
  • 3XX — ఈ కోడ్‌లు ఆపరేషన్‌ను విజయవంతంగా పూర్తి చేయడానికి సాధారణంగా వేరే URIకి అదనపు అభ్యర్థనను తప్పనిసరిగా చేయవలసి ఉంటుందని క్లయింట్‌కు తెలియజేస్తాయి
  • 4XX — క్లయింట్ లోపం. ఇటువంటి కోడ్‌లు తప్పుగా కంపోజ్ చేయబడిన అభ్యర్థన వలన సంభవించవచ్చు. మరొక ఉదాహరణ సుప్రసిద్ధ "404 నాట్ ఫౌండ్" కోడ్, ఇది క్లయింట్ లేని వనరును అభ్యర్థించినప్పుడు సంభవించవచ్చు.
  • 5XX — సర్వర్ లోపం. ఆపరేషన్ వైఫల్యానికి సర్వర్ బాధ్యత వహిస్తే ఈ కోడ్‌లు క్లయింట్‌కు తిరిగి ఇవ్వబడతాయి
REST యొక్క అవలోకనం. పార్ట్ 3: స్ప్రింగ్ బూట్‌లో RESTful సర్వీస్‌ను రూపొందించడం
వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION