Junior
Əməliyyatları həyata keçirərkən HTTP metodlarından niyə istifadə edilir?
sobes.tech Süni İntellekt
AI-dan cavab
HTTP metodları (GET, POST, PUT, PATCH, DELETE) serverdə resurs üzərində həyata keçirilən əməliyyatın növünü müəyyən edir. Bu, aşağıdakıları təmin edir:
- Semantik aydınlıq: Hər metod müştərinin niyyətini açıq şəkildə göstərir (resursu almaq, yaratmaq, yeniləmək, silmək).
- Keşləmə:
GETmetodu standart olaraq keşlənir, bu da performansı artırır. Digər metodlar, vəziyyəti dəyişdirdikdə, adətən keşlənmir. - İdempotensiya: Bəzi metodlar (
GET,PUT,DELETE) idempotentdir, yəni eyni əməliyyatı təkrar etmək, tək bir dəfə etmək kimi eyni nəticəni verir. Bu, etibarlılıq və təkrar cəhdlər üçün vacibdir.POSTidempotent deyil. - Təhlükəsizlik: Metodların ayrılması təhlükəsizlik siyasətlərinin həyata keçirilməsinə kömək edir, müəyyən əməliyyatlara giriş məhdudlaşdırılır.
- Standartlaşdırma: Standart metodların istifadəsi müxtəlif sistemlər və alətlər arasında qarşılıqlı əlaqəni sadələşdirir.
- Xətaların izlənməsi: HTTP status kodları (məsələn, 200 OK, 404 Not Found) müəyyən metod kontekstində daha məlumatlıdır və sorğunun nəticəsini göstərir.
Nümunə:
import requests
# Resursu əldə etmək
response_get = requests.get("https://api.example.com/users/123")
print(f"GET Statusu: {response_get.status_code}")
# Resurs yaratmaq
data_post = {"name": "John Doe", "email": "john.doe@example.com"}
response_post = requests.post("https://api.example.com/users", json=data_post)
print(f"POST Statusu: {response_post.status_code}")
# Resursu yeniləmək
data_put = {"name": "Jane Doe"}
response_put = requests.put("https://api.example.com/users/123", json=data_put)
print(f"PUT Statusu: {response_put.status_code}")
# Hissə-hissə yeniləmə
data_patch = {"email": "jane.doe.updated@example.com"}
response_patch = requests.patch("https://api.example.com/users/123", json=data_patch)
print(f"PATCH Statusu: {response_patch.status_code}")
# Resursu silmək
response_delete = requests.delete("https://api.example.com/users/123")
print(f"DELETE Statusu: {response_delete.status_code}")