REST API உருவாக்குவது எப்படி: வடிவமைப்பு, பாதுகாப்பு மற்றும் வெளியீடு
REST API உருவாக்க, உங்கள் ஆப் நிர்வகிக்கும் resources (users, orders, bookings) பட்டியலிடுங்கள், ஒவ்வொன்றுக்கும் /orders மற்றும் /orders/{id} போன்ற URL கொடுங்கள், செயல்களுக்கு HTTP methods பயன்படுத்துங்கள்: படிக்க GET, உருவாக்க POST, புதுப்பிக்க PATCH, நீக்க DELETE. அர்த்தமுள்ள status codes-உடன் JSON திருப்பியனுப்புங்கள், ஒவ்வொரு உள்ளீட்டையும் validate செய்யுங்கள், authentication மற்றும் பதிவுக்கு பதிவு அனுமதிச் சோதனையை சர்வரில் வையுங்கள், பட்டியல்களை pagination செய்யுங்கள். பின்னர் endpoints-ஐ ஆவணப்படுத்தி, HTTPS-க்குப் பின்னால் API-ஐ வெளியிடுங்கள்.
இந்த வழிகாட்டி வடிவமைப்பு முடிவுகள், ஒரு செயல்முறை எடுத்துக்காட்டு routes, AI app builder-க்கான prompts, மற்றும் பாதுகாப்பு ஓட்டைகளுக்கு வழிவகுக்கும் தவறுகளை உள்ளடக்கியது. API-கள் உங்களுக்குப் புதியவை என்றால், API என்றால் என்ன என்பதிலிருந்து தொடங்குங்கள்.
REST API எப்போது தேவை
- உங்கள் web frontend-க்கு சர்வரிலிருந்து தரவைச் சேமிக்கவும் ஏற்றவும் வேண்டும்
- மொபைல் ஆப், partner அல்லது automation கருவிக்கு உங்கள் தரவு அணுகல் தேவை
- வேறு சேவைகள் உங்களுக்கு நிகழ்வுகளை அனுப்புகின்றன (webhooks)
- frontend மற்றும் backend குழுக்களுக்கு இடையே வேலையைப் பிரிக்கிறீர்கள்
REST மிகப் பொதுவான பாணி, ஆனால் ஒரே பாணி அல்ல. ஒரு நெகிழ்வான query endpoint எப்போது பொருந்தும் என்பதை REST vs GraphQL விளக்குகிறது.
முதலில் வடிவமைக்கவும்: resources மற்றும் routes
உங்கள் ஆப்பிலுள்ள nouns மற்றும் மக்கள் அவற்றுடன் என்ன செய்கிறார்கள் என்பதை எழுதுங்கள். ஒரு எளிய booking ஆப்புக்கு:
| Method | Route | என்ன செய்கிறது | Success code |
|---|---|---|---|
GET | /api/bookings | அழைப்பவரின் bookings-ஐப் பட்டியலிடு (paginated) | 200 |
POST | /api/bookings | புதிய booking உருவாக்கு | 201 |
GET | /api/bookings/{id} | ஒரு booking-ஐப் பெறு | 200 |
PATCH | /api/bookings/{id} | சில fields-ஐ மாற்று | 200 |
DELETE | /api/bookings/{id} | booking-ஐ ரத்து செய் | 204 |
GET | /api/health | monitoring-க்கான health check | 200 |
இவை create, read, update, delete ஆகியவற்றுடன் பொருந்துகின்றன; CRUD என்றால் என்ன என்பதைப் பாருங்கள். பின்பற்றத் தகுந்த விதிகள்:
- URL-களில் பன்மை nouns, verbs இல்லை:
/getBookingsஅல்ல,/bookings. - உரிமையை தெளிவுபடுத்தும்போது ஒரே ஒரு நிலை மட்டும் nest செய்யுங்கள்:
/bookings/{id}/notes. - CRUD அல்லாத செயல்கள் sub-resources ஆக இருக்கலாம்:
POST /bookings/{id}/cancelஒரு மர்ம PATCH-ஐ விட தெளிவானது. - நிலையான பெயரிடல் fields-க்கு, உதாரணமாக எல்லா இடத்திலும்
created_at.
Status codes மற்றும் பிழைகள்
உரையை அலசாமல் கிளையண்ட்கள் என்ன நடந்தது என்று அறிய நிலையான HTTP codes பயன்படுத்துங்கள்:
| Code | பொருள் | எப்போது பயன்படுத்துவது |
|---|---|---|
| 200 | OK | வெற்றிகரமான read அல்லது update |
| 201 | Created | POST ஒன்றை உருவாக்கியது |
| 204 | No Content | திருப்பித்தர எதுவும் இல்லாத வெற்றி |
| 400 | Bad Request | உள்ளீடு validation-இல் தோல்வி |
| 401 | Unauthorized | உள்நுழையவில்லை அல்லது token தவறு |
| 403 | Forbidden | உள்நுழைந்துள்ளார், ஆனால் அனுமதி இல்லை |
| 404 | Not Found | இல்லை, அல்லது அது இருப்பதை அழைப்பவர் அறியக்கூடாது |
| 409 | Conflict | நகல், அல்லது நேரம் ஏற்கனவே பதிவாகிவிட்டது |
| 429 | Too Many Requests | rate limit எட்டப்பட்டது |
| 500 | Server Error | உங்கள் பக்கத்தில் ஏதோ உடைந்தது |
பிழைகளை ஒரே நிலையான JSON வடிவில் திருப்பியனுப்புங்கள், உதாரணமாக {"error": {"code": "slot_taken", "message": "அந்த நேரம் இனி கிடைக்காது."}}. பதில்களில் ஒருபோதும் stack traces அல்லது database பிழைகளைச் சேர்க்காதீர்கள்.
விருப்பங்கள் மற்றும் சமரசங்கள்
| முடிவு | எளிய தேர்வு | மாற்று |
|---|---|---|
| API எங்கே வாழ்கிறது | உங்கள் web framework-இல் API routes | பல clients அல்லது வேறு மொழிக்கு தனி API சேவை |
| Authentication | உங்கள் சொந்த web ஆப்புக்கு session cookies | மொபைல் ஆப்கள் மற்றும் மூன்றாம் தரப்புக்கு tokens (bearer tokens அல்லது API keys) |
| Pagination | ?page=2&limit=20 | cursor-based (?after=...), பெரிய, மாறும் பட்டியல்களுக்கு நிலையானது |
| Versioning | வெளி பயனர்கள் வரும் வரை எதுவும் இல்லை | மற்றவர்கள் சார்ந்திருக்கும்போது path-இல் /v1/ |
| ஆவணங்கள் | routes-ஐப் பட்டியலிடும் README | OpenAPI spec, இதிலிருந்து tools interactive docs மற்றும் client code உருவாக்க முடியும் |
படிப்படியாக
- மேலே உள்ளபடி resources மற்றும் routes-ஐப் பட்டியலிடுங்கள், ஒவ்வொன்றையும் யார் அழைக்கலாம் என்பதுடன்.
- உங்களுக்குத் தேவையான fields மற்றும் உறவுகளுடன் உங்கள் database-இல் தரவை மாதிரியாக்குங்கள்.
- படிக்கும் routes-ஐ முதலில் உருவாக்குங்கள், பின்னர் create, update மற்றும் delete.
- ஒவ்வொரு write-லும் ஒரு schema library மூலம் உள்ளீட்டை validate செய்யுங்கள்: தேவையான fields, வகைகள், நீளங்கள், அனுமதிக்கப்பட்ட மதிப்புகள். தெரியாத fields-ஐ நிராகரியுங்கள்.
- Authentication சேர்க்கவும், பின்னர் பதிவுக்கு பதிவு authorisation:
/bookings/42-ஐ ஏற்றும்போது booking 42 அழைப்பவருக்குச் சொந்தமா என்று சரிபார்க்க வேண்டும், யாரோ உள்நுழைந்துள்ளார் என்பது மட்டும் போதாது. - ஒவ்வொரு பட்டியலையும் paginate செய்து page அளவை வரம்பிடுங்கள்.
- login மற்றும் செலவு மிகுந்த routes-க்கு rate-limit வையுங்கள். rate limiting என்றால் என்ன பாருங்கள்.
- வெளி domains-இல் உள்ள browsers API-ஐ அழைக்க வேண்டுமானால் மட்டும் CORS அமையுங்கள், அந்த origins-ஐ வெளிப்படையாகப் பட்டியலிடுங்கள். நீங்கள் காணும் பிழைகளை CORS பிழைகளை எப்படி சரிசெய்வது விளக்குகிறது.
- ஒவ்வொரு route-க்கும் ஆவணங்களும் சோதனைகளும் எழுதுங்கள், தோல்வி நிகழ்வுகளையும் சேர்த்து.
- ரகசியங்களை environment variables-இல் வைத்து, HTTPS, logs மற்றும் health check உடன் deploy செய்யுங்கள்.
உங்கள் AI builder-க்குக் கொடுக்க வேண்டிய prompts
Scaffold:
bookings-க்கான REST API ஒன்றை இந்த routes-உடன் உருவாக்கவும்: GET /api/health, GET /api/bookings (paginated, ஒரு page-க்கு அதிகபட்சம் 50), POST /api/bookings, GET /api/bookings/:id, PATCH /api/bookings/:id, DELETE /api/bookings/:id. எங்கள் database-இல் தரவைச் சேமிக்கவும். Request bodies-ஐ ஒரு schema library மூலம் validate செய்து, தெரியாத fields-ஐ நிராகரிக்கவும். பிழைகளை {"error": {"code", "message"}} வடிவில் சரியான status codes-உடன் (400, 401, 403, 404, 409) JSON-ஆகத் திருப்பவும். ரகசியங்களை environment variables-இல் வைக்கவும்.
பாதுகாப்பு:
ஒவ்வொரு bookings route-க்கும் உள்நுழைவு கேளுங்கள். ஒவ்வொரு read, update மற்றும் delete-லும் அந்த booking தற்போதைய பயனருக்குச் சொந்தமா என்று சர்வரில் சரிபார்க்கவும்; இல்லையென்றால் 404 திருப்பவும். request body-இலிருந்து user IDs அல்லது roles-ஐ ஒருபோதும் ஏற்காதீர்கள். POST /api/bookings-ஐ பயனருக்கு நிமிடத்திற்கு 20 என rate-limit செய்யுங்கள். சர்வரில் பிழைகளைப் பதிவு செய்யுங்கள், stack traces-ஐ திருப்பி அனுப்பாதீர்கள்.
ஆவணங்கள்:
இந்த routes-இன் OpenAPI விளக்கத்தையும், ஒவ்வொன்றுக்கும் எடுத்துக்காட்டு requests மற்றும் responses உடன் ஒரு சிறிய README-ஐயும் எழுதவும்.
உங்கள் API-ஐ சோதித்தல்
Frontend-க்கு வெளியிலிருந்து சோதியுங்கள், ஏனெனில் தாக்குபவர்கள் அப்படித்தான் சோதிப்பார்கள்:
- ஒவ்வொரு route-உம் சரியான உள்ளீட்டுடன் வேலை செய்து, ஆவணப்படுத்திய வடிவம் மற்றும் code-ஐத் திருப்புகிறது
- காணாமல் போன அல்லது தவறான fields 400 மற்றும் தெளிவான செய்தியுடன் திரும்புகின்றன
- பாதுகாக்கப்பட்ட ஒவ்வொரு route-லும் token இல்லாவிட்டால் 401
- பயனர் A, ID மூலம் பயனர் B-யின் பதிவைக் கேட்டால் 404 அல்லது 403
- பட்டியல்கள் paginate ஆகின்றன; மிகப் பெரிய
limitவரம்பிடப்படுகிறது - நகல் அல்லது முரண்படும் creates 500 அல்ல, 409 திருப்புகின்றன
- rate limits 429 திருப்புகின்றன
- பிழை பதில்களில் stack traces, SQL அல்லது ரகசியங்கள் இல்லை
- CORS நீங்கள் நோக்கிய origins-ஐ மட்டுமே அனுமதிக்கிறது
பொதுவான தவறுகள்
- உள்நுழைவைச் சரிபார்த்து உரிமையைச் சரிபார்க்காதது. மிகப் பொதுவான API ஓட்டை: எந்த உள்நுழைந்த பயனரும் ID-ஐ மாற்றி எந்தப் பதிவையும் படிக்கலாம்.
- கிளையண்டை நம்புவது. request body-இலிருந்து வரும் விலைகள், roles மற்றும் user IDs திருத்தப்படலாம்.
- முழு database வரிசைகளைத் திருப்புவது. கடவுச்சொல் hashes மற்றும் உள் fields கசியும். ஒவ்வொரு பதிலிலும் எது இருக்க வேண்டும் என்று தேர்ந்தெடுங்கள்.
- எல்லையற்ற பட்டியல்கள். ஒவ்வொரு பதிவுக்கும் ஒரே கோரிக்கை முழு ஆப்பையும் மெதுவாக்கலாம்.
- உள்ளே பிழைச் செய்தியுடன்
200 OK. கிளையண்ட்களும் monitoring-உம் தோல்வியை அறிய முடியாது. - cookies பயன்படுத்தும் API-இல் எல்லாவற்றையும் அனுமதிக்கும் CORS.
- health check அல்லது logs இல்லாதது, அதனால் பயனர்களிடமிருந்தே outage-ஐ அறிவீர்கள்.
பரந்த வெளியீட்டுக்கு முந்தைய சரிபார்ப்புக்கு, AI-ஆல் கட்டப்பட்ட ஆப்புகளுக்கான பாதுகாப்புப் பட்டியல் பாருங்கள்.
Mythex-இல் REST API உருவாக்குதல்
உங்கள் ஆப்பின் ஒரு பகுதியாகவோ அல்லது தனி சேவையாகவோ Mythex-இடம் API கேட்கலாம். ஆவணங்களின் REST API backend recipe-இல் ஒரு தொடக்க prompt உள்ளது: உங்கள் framework மற்றும் routes-ஐ பெயரிடுங்கள், தெளிவான JSON பிழைகளைக் கேளுங்கள், ரகசியங்களை environment variables-இல் வைத்திருங்கள், Dockerfile சேர்க்கவும். Node, Python, C#, Java மற்றும் பிற மொழிகளின் container backends Dockerfile மூலம் வெளியிடப்படுகின்றன; Publish-இலிருந்து deploy-ஐ Mythex கையாளும் (API backends). ஒரு project web தளத்தையும் API சர்வரையும் அருகருகே இயக்கலாம், preview-இல் இரண்டுக்கும் இடையே மாறலாம். ரகசியங்களை project secrets-ஆகச் சேமியுங்கள்; API-க்கு database தேவைப்பட்டால் chat-இல் கேளுங்கள். உங்கள் API-ஐச் சுற்றியுள்ள திட்டமிட்ட வேலைகளுக்கு, background jobs இயக்குவது எப்படி பாருங்கள்.
கேள்விகள்
REST API என்றால் என்ன?
REST API என்பது நிரல்கள் HTTP வழியாக உங்கள் ஆப்பின் தரவுடன் வேலை செய்யும் ஒரு வழி. ஒவ்வொரு வகைத் தரவும் அதற்கே உரிய URL கொண்ட resource ஆகும், உதாரணமாக /orders. அதில் நிலையான methods செயல்படும்: படிக்க GET, உருவாக்க POST, புதுப்பிக்க PATCH அல்லது PUT, நீக்க DELETE. தரவு பொதுவாக JSON வடிவில் அனுப்பப்படும்.
REST API எந்த மொழியில் உருவாக்க வேண்டும்?
நீங்களோ உங்கள் குழுவோ பராமரிக்கக்கூடிய மொழியைப் பயன்படுத்துங்கள். Express அல்லது Fastify உடன் Node.js, FastAPI உடன் Python, மற்றும் C# அல்லது Java frameworks அனைத்தும் நன்றாக வேலை செய்யும். routes, status codes, validation மற்றும் authentication பற்றிய வடிவமைப்பு விதிகள் மொழியை விட முக்கியம்.
REST API-ஐ எப்படிப் பாதுகாப்பது?
பொதுவில் இல்லாத ஒவ்வொரு route-க்கும் authentication கேளுங்கள், ஒவ்வொரு குறிப்பிட்ட பதிவையும் அணுகுபவருக்கு உரிமை உண்டா என்று சர்வரில் சரிபாருங்கள், எல்லா உள்ளீட்டையும் validate செய்யுங்கள், HTTPS பயன்படுத்துங்கள், கோரிக்கைகளுக்கு rate limit வையுங்கள், ரகசியங்களை environment variables-இல் வையுங்கள். கிளையண்ட் அனுப்பும் IDs அல்லது roles-ஐ ஒருபோதும் நம்பாதீர்கள்.
REST API-க்கு தனி backend வேண்டுமா?
எப்போதும் வேண்டியதில்லை. Next.js போன்ற frameworks பக்கங்களுடன் சேர்த்து API routes-ஐயும் வழங்க முடியும். பல clients (web, mobile, partners) பயன்படுத்தும்போது, அல்லது அதற்குத் தனி மொழி அல்லது scaling தேவைப்படும்போது தனி API சேவை பொருத்தமானது.