Sobes.tech
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ə: GET metodu 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. POST idempotent 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}")