İletişim

Endpoint (API Uç Noktası) Nedir?

Kısa tanım

Endpoint (API uç noktası), bir API'nin dışarıya açtığı ve belirli bir işlemi karşılayan tekil erişim noktasıdır. Web API'lerinde bir endpoint genellikle bir URL yolu ile bir HTTP metodunun birleşiminden oluşur; örneğin GET /v1/orders/{id} bir siparişi okur, DELETE /v1/orders/{id} ise siler. Her endpoint kabul ettiği parametreleri, istek gövdesini, kimlik doğrulama şeklini ve dönebileceği yanıtları tanımlar.

Diğer adları: endpoint, uç nokta, API uç noktası, API endpoint

Bir API taban adresinin kaynaklara ve her biri metot ile yoldan oluşan uç noktalara ayrıldığını gösteren ağaç

Yol ve metot birlikte bir uç nokta tanımlar

Bir API bütün sözleşmedir; endpoint ise o sözleşmenin tek bir maddesi, tek bir kapısıdır. Web API'lerinde bu kapıyı adres ve HTTP metodu birlikte tanımlar. Aynı yol farklı metotlarla farklı işler yapar, dolayısıyla belgelerde ayrı endpoint'ler olarak listelenir:

Endpointİşlevi
GET /v1/ordersSiparişleri listeler; filtre ve sayfalama sorgu parametreleriyle verilir
POST /v1/ordersYeni sipariş oluşturur
GET /v1/orders/{orderId}Tek bir siparişi okur
PATCH /v1/orders/{orderId}Siparişin bir kısmını günceller
DELETE /v1/orders/{orderId}Siparişi iptal eder veya siler

Tam adres, ortak bir taban adresle (https://api.example.com) yolun birleşimidir. Süslü parantezli kısım yol parametresidir; ?status=open&page=2 gibi eklemeler ise sorgu parametreleridir.

Bir endpoint'in sözleşmesi

İyi belgelenmiş bir endpoint şu soruların hepsine cevap verir: hangi parametreleri alır, gövdede hangi alanlar zorunludur, kimlik nasıl doğrulanır, başarılı yanıt neye benzer, hangi hata kodları dönebilir ve kullanım sınırı nedir? OpenAPI formatında aynı bilgi makinece okunabilir biçimde yazılır:

paths:
  /v1/orders/{orderId}:
    get:
      summary: Tek bir siparişi getirir
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Sipariş bulundu
        "404":
          description: Böyle bir sipariş yok

Bu tanımdan dokümantasyon sayfası, otomatik testler ve istemci kodu üretilebilir.

Sık karıştırılan durumlar

  • Endpoint ve URL: URL bir adrestir; endpoint, o adresteki belirli bir işlemin bütün kurallarıdır.
  • REST ve endpoint sayısı: REST API'lerde her kaynak ve işlem için ayrı endpoint bulunur. GraphQL ise çoğunlukla tek bir endpoint kullanır; neyin isteneceğini sorgunun kendisi söyler.
  • Webhook endpoint'i: Burada yön tersine döner. Karşı sistemin olay olduğunda çağıracağı adresi siz yayınlarsınız; yani endpoint sizin tarafınızdadır.

İyi endpoint tasarımının ölçütleri

  • Yollar eylem değil kaynak adlandırır: /orders/1042/cancel yerine çoğu zaman durum alanını güncelleyen bir PATCH daha tutarlıdır; yine de iş akışı gerektiren işlemler için eylem endpoint'i bilinçli bir tercih olabilir.
  • Sürüm yolda veya başlıkta açıkça belirtilir; kırıcı değişiklik yeni sürümle gelir.
  • Liste döndüren her endpoint sayfalama yapar; sınırsız liste bir gün sunucuyu yorar.
  • Hata yanıtları bütün endpoint'lerde aynı yapıyı kullanır.

Her endpoint ayrı bir güvenlik yüzeyi

Yeni bir endpoint eklemek, sisteme yeni bir kapı açmaktır. Kimlik doğrulamanın yanında nesne düzeyinde yetki kontrolü de gerekir: kullanıcı oturum açmış olsa bile /v1/orders/1043 isteğinde o siparişin gerçekten ona ait olup olmadığı kontrol edilmelidir. Bu kontrolün eksikliği, OWASP'ın API güvenliği listesinde ilk sırada yer alan zafiyet türüdür. Herkese açık endpoint'lerde hız sınırlama ve kullanılmayan, belgelenmemiş eski endpoint'lerin envanterden düşülüp kapatılması da aynı derecede önemlidir.

İlgili terimler

← Sözlüğe dön