Το REST χρησιμοποιεί τις τυπικές μεθόδους HTTP ως τα ρήματα που ενεργούν πάνω στους πόρους. Η συνηθισμένη αντιστοίχιση στο CRUD (Create, Read, Update, Delete) είναι:
Το REST χρησιμοποιεί τις τυπικές μεθόδους HTTP ως τα ρήματα που ενεργούν πάνω στους πόρους. Η συνηθισμένη αντιστοίχιση στο CRUD (Create, Read, Update, Delete) είναι:
| CRUD | Method | Τυπική χρήση |
|---|
| Create | POST | Προσθήκη νέου πόρου σε μια collection |
| Read | GET | Ανάκτηση πόρου ή λίστας |
| Update (πλήρες) | PUT | Πλήρης αντικατάσταση ενός πόρου |
| Update (μερικό) | PATCH | Τροποποίηση ορισμένων πεδίων |
| Delete | DELETE | Αφαίρεση πόρου |
POST /users HTTP/1.1
Content-Type: application/json
{ "name": "Ann", "email": "[email protected]" }
HTTP/1.1 201 Created
Location: /users/42
{ "id": 42, "name": "Ann", "email": "[email protected]" }
Το PUT /users/42 στέλνει ολόκληρη την αναπαράσταση και την αντικαθιστά· το PATCH /users/42 στέλνει μόνο τα πεδία προς αλλαγή (π.χ. { "email": "[email protected]" }).
Αυτές είναι δύο διαφορετικές ιδιότητες:
GET, HEAD, OPTIONS είναι safe.GET, PUT, DELETE, HEAD είναι idempotent.Method Safe? Idempotent?
GET yes yes
HEAD yes yes
PUT no yes (replacing with the same body twice = same result)
DELETE no yes (deleting twice = still deleted)
PATCH no no* (depends on the patch; not guaranteed)
POST no no (posting twice usually creates two resources)
Οι συνεντευξιαστές ρωτούν αυτό για να δουν αν κατανοείτε τη σημασιολογία του HTTP αρκετά καλά ώστε να χτίσετε αξιόπιστα APIs. Η διάκριση safe/idempotent δεν είναι ακαδημαϊκή: διέπει άμεσα τι επιτρέπεται να κάνουν clients, proxies, και CDNs. Οι safe μέθοδοι μπορούν να γίνονται cache και prefetch ελεύθερα· οι idempotent μέθοδοι μπορούν να ξαναδοκιμαστούν αυτόματα (retried) μετά από ένα network timeout χωρίς κίνδυνο διπλασιασμού των παρενεργειών — γι' αυτό ένας client μπορεί με ασφάλεια να ξαναδοκιμάσει ένα PUT ή DELETE αλλά πρέπει να είναι προσεκτικός στην επανάληψη ενός POST (μπορεί να δημιουργήσει δύο orders). Το κλασικό λάθος είναι η χρήση GET για την πυροδότηση παρενεργειών (π.χ. GET /users/42/delete), που σπάει το caching και επιτρέπει σε crawlers να μεταβάλλουν κατά λάθος δεδομένα. Η επιλογή της σωστής μεθόδου — και ο σεβασμός στο συμβόλαιο safety και idempotency της — είναι αυτό που κάνει ένα API προβλέψιμο και ασφαλές για να χτίσετε εργαλεία γύρω του.
Μια βιβλιοθήκη ερωτήσεων συνέντευξης IT με αναλυτικές απαντήσεις — από Junior έως Senior.
Δωρεά