REST API ఎలా నిర్మించాలి: డిజైన్, భద్రత మరియు డిప్లాయ్మెంట్
REST API నిర్మించడానికి, మీ యాప్ నిర్వహించే రిసోర్సులను జాబితా చేయండి (users, orders, bookings), ప్రతిదానికి /orders మరియు /orders/{id} వంటి URL ఇవ్వండి, మరియు చర్యల కోసం HTTP మెథడ్లను ఉపయోగించండి: చదవడానికి GET, సృష్టించడానికి POST, అప్డేట్ చేయడానికి PATCH, తొలగించడానికి DELETE. అర్థవంతమైన స్టేటస్ కోడ్లతో JSON తిరిగి ఇవ్వండి, ప్రతి ఇన్పుట్ను వాలిడేట్ చేయండి, సర్వర్లో ఆథెంటికేషన్ మరియు ప్రతి రికార్డుకు అనుమతి తనిఖీలు తప్పనిసరి చేయండి, జాబితాలకు పేజినేషన్ ఇవ్వండి. తర్వాత ఎండ్పాయింట్లను డాక్యుమెంట్ చేసి, API ను HTTPS వెనుక డిప్లాయ్ చేయండి.
ఈ గైడ్ డిజైన్ నిర్ణయాలు, పని చేసే రూట్ల ఉదాహరణలు, AI యాప్ బిల్డర్ కోసం ప్రాంప్ట్లు, మరియు భద్రతా లోపాలకు కారణమయ్యే తప్పులను వివరిస్తుంది. APIలు మీకు కొత్తవైతే, API అంటే ఏమిటి అని ముందుగా చదవండి.
REST API ఎప్పుడు అవసరం?
- మీ వెబ్ ఫ్రంటెండ్ సర్వర్ నుండి డేటాను సేవ్ చేయాలి మరియు లోడ్ చేయాలి
- మొబైల్ యాప్, భాగస్వామి లేదా ఆటోమేషన్ టూల్కు మీ డేటాకు యాక్సెస్ కావాలి
- ఇతర సర్వీసులు మీకు ఈవెంట్లు పంపుతున్నాయి (webhooks)
- మీరు ఫ్రంటెండ్ మరియు బ్యాకెండ్ టీమ్ల మధ్య పని విభజిస్తున్నారు
REST అత్యంత సాధారణ శైలి, కానీ ఒక్కటే కాదు. REST vs GraphQL ఒకే ఫ్లెక్సిబుల్ క్వెరీ ఎండ్పాయింట్ ఎప్పుడు బాగా సరిపోతుందో వివరిస్తుంది.
ముందుగా డిజైన్ చేయండి: రిసోర్సులు మరియు రూట్లు
మీ యాప్లోని నామవాచకాలు మరియు ప్రజలు వాటితో ఏమి చేస్తారో రాయండి. ఒక సాధారణ బుకింగ్ యాప్ కోసం:
| మెథడ్ | రూట్ | ఇది ఏమి చేస్తుంది | విజయ కోడ్ |
|---|---|---|---|
GET | /api/bookings | కాలర్ బుకింగ్ల జాబితా (పేజినేటెడ్) | 200 |
POST | /api/bookings | బుకింగ్ సృష్టించండి | 201 |
GET | /api/bookings/{id} | ఒక బుకింగ్ తీసుకురండి | 200 |
PATCH | /api/bookings/{id} | కొన్ని ఫీల్డ్లు మార్చండి | 200 |
DELETE | /api/bookings/{id} | బుకింగ్ రద్దు చేయండి | 204 |
GET | /api/health | మానిటరింగ్ కోసం హెల్త్ చెక్ | 200 |
ఇవి create, read, update మరియు delete కు అనుగుణంగా ఉంటాయి; CRUD అంటే ఏమిటి చూడండి. అనుసరించదగిన సంప్రదాయాలు:
- URLలలో బహువచన నామవాచకాలు, క్రియలు లేవు:
/bookings,/getBookingsకాదు. - యాజమాన్యం స్పష్టం చేయడానికి అవసరమైతే ఒక స్థాయికి మాత్రమే నెస్ట్ చేయండి:
/bookings/{id}/notes. - CRUD కాని చర్యలను సబ్-రిసోర్సులుగా చేయవచ్చు:
POST /bookings/{id}/cancelఅనేది మ్యాజిక్ PATCH కంటే స్పష్టంగా ఉంటుంది. - ఫీల్డ్ పేర్లకు స్థిరమైన పేరు, ఉదాహరణకు ప్రతిచోటా
created_at.
స్టేటస్ కోడ్లు మరియు ఎర్రర్లు
క్లయింట్లు టెక్స్ట్ పార్స్ చేయకుండానే ఏమి జరిగిందో తెలుసుకునేలా ప్రామాణిక HTTP కోడ్లను ఉపయోగించండి:
| కోడ్ | అర్థం | ఎప్పుడు ఉపయోగించాలి |
|---|---|---|
| 200 | OK | విజయవంతమైన చదవడం లేదా అప్డేట్ |
| 201 | Created | POST ద్వారా ఏదైనా సృష్టించబడింది |
| 204 | No Content | తిరిగి ఇవ్వాల్సింది లేకుండా విజయం |
| 400 | Bad Request | ఇన్పుట్ వాలిడేషన్లో విఫలమైంది |
| 401 | Unauthorized | లాగిన్ కాలేదు లేదా టోకెన్ తప్పు |
| 403 | Forbidden | లాగిన్ అయ్యారు కానీ అనుమతి లేదు |
| 404 | Not Found | ఉనికిలో లేదు, లేదా ఉందని కాలర్కు తెలియకూడదు |
| 409 | Conflict | నకిలీ, లేదా స్లాట్ ఇప్పటికే బుక్ అయింది |
| 429 | Too Many Requests | రేట్ లిమిట్ చేరుకుంది |
| 500 | Server Error | మీ వైపు ఏదో విరిగింది |
ఎర్రర్లను ఒకే స్థిరమైన JSON రూపంలో తిరిగి ఇవ్వండి, ఉదాహరణకు {"error": {"code": "slot_taken", "message": "ఆ సమయం ఇక అందుబాటులో లేదు."}}, మరియు రెస్పాన్స్లలో స్టాక్ ట్రేస్లు లేదా డేటాబేస్ ఎర్రర్లను ఎప్పుడూ చేర్చకండి.
ఎంపికలు మరియు ట్రేడ్-ఆఫ్లు
| నిర్ణయం | సరళమైన ఎంపిక | ప్రత్యామ్నాయం |
|---|---|---|
| API ఎక్కడ ఉంటుంది | మీ వెబ్ ఫ్రేమ్వర్క్లో API రూట్లు | ప్రత్యేక API సర్వీస్, అనేక క్లయింట్లు లేదా వేరే భాష కోసం ఉపయోగకరం |
| ఆథెంటికేషన్ | మీ స్వంత వెబ్ యాప్ కోసం సెషన్ కుకీలు | మొబైల్ యాప్లు మరియు థర్డ్-పార్టీల కోసం టోకెన్లు (bearer tokens లేదా API keys) |
| పేజినేషన్ | ?page=2&limit=20 | కర్సర్-ఆధారిత (?after=...), పెద్ద, మారే జాబితాలకు స్థిరంగా ఉంటుంది |
| వెర్షనింగ్ | బయటి యూజర్లు వచ్చే వరకు ఏదీ లేదు | ఇతరులు ఆధారపడినప్పుడు పాత్లో /v1/ |
| డాక్స్ | రూట్లను జాబితా చేసే README | OpenAPI స్పెక్, దీనిని టూల్స్ ఇంటరాక్టివ్ డాక్స్ మరియు క్లయింట్ కోడ్గా మార్చగలవు |
దశలవారీగా
- పైన చెప్పినట్లు రిసోర్సులు మరియు రూట్లను జాబితా చేయండి, ప్రతి ఒక్కదాన్ని ఎవరు పిలవగలరో కూడా.
- మీకు కావాల్సిన ఫీల్డ్లు మరియు సంబంధాలతో మీ డేటాబేస్లో డేటాను మోడల్ చేయండి.
- ముందుగా చదివే రూట్లను నిర్మించండి, తర్వాత create, update మరియు delete.
- స్కీమా లైబ్రరీతో ప్రతి రైట్పై ఇన్పుట్ను వాలిడేట్ చేయండి: తప్పనిసరి ఫీల్డ్లు, రకాలు, పొడవులు, అనుమతించిన విలువలు. తెలియని ఫీల్డ్లను తిరస్కరించండి.
- ఆథెంటికేషన్ జోడించండి, తర్వాత ప్రతి రికార్డుకు ఆథరైజేషన్:
/bookings/42లోడ్ చేసినప్పుడు, ఎవరో లాగిన్ అయ్యారా అని మాత్రమే కాదు, బుకింగ్ 42 కాలర్దేనా అని సర్వర్ తనిఖీ చేయాలి. - ప్రతి జాబితాకు పేజినేషన్ ఇవ్వండి మరియు పేజీ సైజును పరిమితం చేయండి.
- లాగిన్ మరియు ఖర్చయ్యే రూట్లపై రేట్ లిమిట్ పెట్టండి. రేట్ లిమిటింగ్ అంటే ఏమిటి చూడండి.
- ఇతర డొమైన్లలోని బ్రౌజర్లు API ను పిలవాలంటే మాత్రమే CORS కాన్ఫిగర్ చేయండి, మరియు ఆ ఆరిజిన్లను స్పష్టంగా జాబితా చేయండి. CORS ఎర్రర్లను ఎలా సరిచేయాలి మీరు చూసే ఎర్రర్లను వివరిస్తుంది.
- ప్రతి రూట్కు డాక్స్ మరియు టెస్ట్లు రాయండి, విఫల సందర్భాలతో సహా.
- సీక్రెట్లను ఎన్విరాన్మెంట్ వేరియబుల్స్లో, HTTPS, లాగ్లు మరియు హెల్త్ చెక్తో డిప్లాయ్ చేయండి.
మీ AI బిల్డర్కు ఇవ్వాల్సిన ప్రాంప్ట్లు
స్కాఫోల్డ్:
బుకింగ్ల కోసం ఈ రూట్లతో REST API సృష్టించండి: GET /api/health, GET /api/bookings (పేజినేటెడ్, పేజీకి గరిష్టంగా 50), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. డేటాను మా డేటాబేస్లో నిల్వ చేయండి. రిక్వెస్ట్ బాడీలను స్కీమా లైబ్రరీతో వాలిడేట్ చేసి తెలియని ఫీల్డ్లను తిరస్కరించండి. ఎర్రర్లను {"error": {"code", "message"}} రూపంలో సరైన స్టేటస్ కోడ్లతో (400, 401, 403, 404, 409) JSON గా తిరిగి ఇవ్వండి. సీక్రెట్లను ఎన్విరాన్మెంట్ వేరియబుల్స్లో ఉంచండి.
సెక్యూరిటీ:
ప్రతి bookings రూట్కు లాగిన్ అవసరం చేయండి. ప్రతి read, update మరియు delete లో బుకింగ్ ప్రస్తుత యూజర్దేనా అని సర్వర్లో తనిఖీ చేయండి; కాకపోతే 404 ఇవ్వండి. రిక్వెస్ట్ బాడీ నుండి యూజర్ IDలు లేదా రోల్స్ను ఎప్పుడూ అంగీకరించవద్దు. POST /api/bookings ను యూజర్కు నిమిషానికి 20కి పరిమితం చేయండి. స్టాక్ ట్రేస్లు తిరిగి ఇవ్వకుండా సర్వర్లో ఎర్రర్లను లాగ్ చేయండి.
డాక్స్:
ఈ రూట్ల OpenAPI వివరణ మరియు ప్రతి దానికి ఉదాహరణ రిక్వెస్ట్లు, రెస్పాన్స్లతో ఒక చిన్న README రాయండి.
మీ APIని టెస్ట్ చేయడం
ఫ్రంటెండ్ బయట నుండి టెస్ట్ చేయండి, ఎందుకంటే దాడి చేసేవారు చేస్తారు:
- ప్రతి రూట్ సరైన ఇన్పుట్తో పనిచేస్తుంది మరియు డాక్యుమెంట్ చేసిన రూపం మరియు కోడ్ను ఇస్తుంది
- తప్పిపోయిన లేదా తప్పు ఫీల్డ్లు స్పష్టమైన సందేశంతో 400 ఇస్తాయి
- ప్రతి రక్షిత రూట్పై టోకెన్ లేకపోతే 401 వస్తుంది
- యూజర్ A, యూజర్ B రికార్డును ID ద్వారా అడిగితే 404 లేదా 403 వస్తుంది
- జాబితాలకు పేజినేషన్ ఉంది; పెద్ద
limitపరిమితం అవుతుంది - నకిలీ లేదా విరుద్ధమైన సృష్టిలు 500 కాకుండా 409 ఇస్తాయి
- రేట్ లిమిట్లు 429 ఇస్తాయి
- ఎర్రర్ రెస్పాన్స్లలో స్టాక్ ట్రేస్లు, SQL లేదా సీక్రెట్లు లేవు
- CORS మీరు ఉద్దేశించిన ఆరిజిన్లను మాత్రమే అనుమతిస్తుంది
సాధారణ తప్పులు
- లాగిన్ను తనిఖీ చేయడం, యాజమాన్యాన్ని కాదు. అత్యంత సాధారణ API లోపం: ఏ లాగిన్ యూజర్ అయినా ID మార్చి ఏ రికార్డునైనా చదవగలడు.
- క్లయింట్ను నమ్మడం. రిక్వెస్ట్ బాడీలోని ధరలు, రోల్స్ మరియు యూజర్ IDలను మార్చవచ్చు.
- మొత్తం డేటాబేస్ రోలను తిరిగి ఇవ్వడం. పాస్వర్డ్ హ్యాష్లు మరియు అంతర్గత ఫీల్డ్లు లీక్ అవుతాయి. ప్రతి రెస్పాన్స్లో ఏమి ఉండాలో ఎంచుకోండి.
- పరిమితి లేని జాబితాలు. ప్రతి రికార్డుకు ఒక రిక్వెస్ట్ మొత్తం యాప్ను నెమ్మదింపజేయగలదు.
- లోపల ఎర్రర్ సందేశంతో
200 OK. క్లయింట్లు మరియు మానిటరింగ్ అది విఫలమైందని తెలుసుకోలేవు. - కుకీలు ఉపయోగించే API పై అన్నింటినీ అనుమతించే CORS.
- హెల్త్ చెక్ లేదా లాగ్లు లేకపోవడం, కాబట్టి అంతరాయాల గురించి మీకు యూజర్లు చెప్తారు.
విస్తృత ప్రీ-లాంచ్ తనిఖీ కోసం, AI-నిర్మిత యాప్ల కోసం సెక్యూరిటీ చెక్లిస్ట్ చూడండి.
Mythex లో REST API నిర్మించడం
మీ యాప్లో భాగంగా లేదా ప్రత్యేక సర్వీస్గా Mythex ను API కోసం అడగవచ్చు. డాక్స్ రెసిపీ REST API backend లో స్టార్టర్ ప్రాంప్ట్ ఉంది: మీ ఫ్రేమ్వర్క్ మరియు రూట్లను పేర్కొనండి, స్పష్టమైన JSON ఎర్రర్లు అడగండి, సీక్రెట్లను ఎన్విరాన్మెంట్ వేరియబుల్స్లో ఉంచండి, మరియు Dockerfile చేర్చండి. Node, Python, C#, Java మరియు ఇతర భాషలలోని కంటైనర్ బ్యాకెండ్లు Dockerfile ద్వారా పబ్లిష్ అవుతాయి, మరియు Publish నుండి డిప్లాయ్మెంట్ను Mythex నిర్వహిస్తుంది (API backends). ఒక ప్రాజెక్ట్ వెబ్సైట్ మరియు API సర్వర్ను పక్కపక్కనే నడపగలదు, మరియు ప్రివ్యూలో వాటి మధ్య మారవచ్చు. సీక్రెట్లను ప్రాజెక్ట్ సీక్రెట్లుగా నిల్వ చేయండి, API కు డేటాబేస్ కావాలంటే చాట్లో అడగండి. మీ API చుట్టూ షెడ్యూల్ చేసిన పనుల కోసం, బ్యాక్గ్రౌండ్ జాబ్లను ఎలా నడపాలి చూడండి.
ప్రశ్నలు
REST API అంటే ఏమిటి?
REST API అంటే ప్రోగ్రామ్లు HTTP ద్వారా మీ యాప్ డేటాతో పనిచేయడానికి ఉపయోగించే ఒక మార్గం. ప్రతి రకం డేటా దానికంటూ ఒక URL ఉన్న రిసోర్స్, ఉదాహరణకు /orders. ప్రామాణిక మెథడ్లు దానిపై పనిచేస్తాయి: చదవడానికి GET, సృష్టించడానికి POST, అప్డేట్ చేయడానికి PATCH లేదా PUT, తొలగించడానికి DELETE. డేటా సాధారణంగా JSON రూపంలో పంపబడుతుంది.
REST API ఏ భాషలో నిర్మించాలి?
మీరు లేదా మీ టీమ్ నిర్వహించగల భాషను ఉపయోగించండి. Express లేదా Fastify తో Node.js, FastAPI తో Python, మరియు C# లేదా Java ఫ్రేమ్వర్క్లు అన్నీ బాగా పనిచేస్తాయి. రూట్లు, స్టేటస్ కోడ్లు, వాలిడేషన్ మరియు ఆథెంటికేషన్ యొక్క డిజైన్ నియమాలు భాష కంటే ఎక్కువ ముఖ్యం.
REST API ను ఎలా సురక్షితంగా ఉంచాలి?
పబ్లిక్ కాని ప్రతి రూట్కు ఆథెంటికేషన్ అవసరం చేయండి, ప్రతి రికార్డును కాలర్ యాక్సెస్ చేయవచ్చో లేదో సర్వర్లో తనిఖీ చేయండి, అన్ని ఇన్పుట్ను వాలిడేట్ చేయండి, HTTPS వాడండి, రిక్వెస్ట్లపై రేట్ లిమిట్ పెట్టండి, మరియు రహస్య సమాచారాన్ని ఎన్విరాన్మెంట్ వేరియబుల్స్లో ఉంచండి. క్లయింట్ పంపిన IDలు లేదా రోల్స్ను ఎప్పుడూ నమ్మకండి.
REST API కి ప్రత్యేక బ్యాకెండ్ అవసరమా?
ఎప్పుడూ కాదు. Next.js వంటి ఫ్రేమ్వర్క్లు పేజీలతో పాటు API రూట్లను కూడా అందించగలవు. వెబ్, మొబైల్, భాగస్వాములు వంటి అనేక క్లయింట్లు ఉపయోగించినప్పుడు, లేదా దానికి ప్రత్యేక భాష లేదా స్కేలింగ్ అవసరమైనప్పుడు ప్రత్యేక API సర్వీస్ అర్థవంతంగా ఉంటుంది.