DEV Community

Cover image for Apidog Global Parametre Ayarları: Her İstekte Yetkilendirme Başlığı Ekleme
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Apidog Global Parametre Ayarları: Her İstekte Yetkilendirme Başlığı Ekleme

Bir projenizde 40 uç nokta olduğunu ve her çağrının aynı Authorization: Bearer ... ile X-Api-Version başlıklarını gerektirdiğini düşünün. Bu iki satırı her isteğe elle eklemek hem yavaştır hem de tutarsızlıklara yol açar: bir uç noktada jeton unutulur, başka birinde sürüm farklıdır ve yalnızca birkaç rotada görünen 401 hatalarını ayıklamak zorunda kalırsınız.

Apidog'u bugün deneyin

Daha sürdürülebilir yaklaşım, bu değerleri bir kez tanımlayıp isteklerde otomatik olarak kullanmaktır. Apidog, parametreleri proje düzeyinde tanımlamanıza, jetonları değişken olarak referans almanıza ve bunları tüm uç noktalara uygulamanıza olanak tanır.

Bu rehberde şunları uygulayacaksınız:

  • Proje genelinde Authorization ve X-Api-Version başlığı ekleme
  • Jetonu ortam değişkeninde saklama
  • Başlığın gerçekten ağa gönderildiğini doğrulama
  • Yalnızca belirli bir klasöre başlık ekleme
  • Aynı yapılandırmayı Apidog CLI ile otomasyonda kullanma

Değişken kullanımı hakkında daha fazla ayrıntı için Apidog'da değişkenlere hakim olma rehberine bakabilirsiniz.

HTTP başlıkları Apidog'a özgü değildir. MDN HTTP başlıkları referansında açıklandığı gibi, istekle birlikte gönderilen anahtar/değer çiftleridir. Apidog burada bu değerleri her uç noktada tekrar yazmak yerine merkezi olarak yönetmenizi sağlar.

Global parametreler ne anlama gelir?

Apidog'da global parametre, tek bir uç noktaya değil tüm projeye uygulanan istek parametresidir. Bir kez tanımlandığında, eşleşen isteklere otomatik olarak eklenir.

Global parametreleri şu konumlarda kullanabilirsiniz:

  • Başlıklar: Authorization, X-Api-Version gibi HTTP başlıkları
  • Çerezler: Oturum çerezleri
  • Sorgu: ?api_key=... gibi URL sorgu parametreleri
  • Gövde: Her isteğin gövdesinde bulunması gereken alanlar

Bu yazıdaki yetkilendirme örneği için Başlıklar seçeneğini kullanacağız.

Global parametreler, uç nokta düzeyinde tanımlanan parametrelerden daha düşük önceliğe sahiptir. Bir istek kendi Authorization başlığını içeriyorsa, uç nokta düzeyindeki değer kullanılır. Bu davranış, global parametreleri zorlayıcı bir geçersiz kılma yerine güvenli varsayılanlar hâline getirir.

Her isteğe global başlık ekleme

Hedefimiz, projedeki tüm uç noktalara tek tek dokunmadan şu iki başlığı eklemek:

Authorization: Bearer {{token}}
X-Api-Version: 2024-08-01
Enter fullscreen mode Exit fullscreen mode

1. Ortam Yönetimi'ni açın

Apidog'da sağ üst köşedeki Ortam Yönetimi alanını açın. Global parametreleri burada tanımlarsınız.

Apidog belgeleri, bu alanı isteklerle birlikte gönderilen ortak değerleri yönetmek için kullanır.

2. Başlıklar konumunu seçin

Yeni parametre eklerken Başlıklar veya İstek Başlığı konumunu seçin.

Başlığınız bir çerez, sorgu parametresi ya da gövde alanı olsaydı sırasıyla Çerezler, Sorgu veya Gövde seçeneklerini kullanırdınız. Yapılandırma mantığı aynıdır.

3. Authorization parametresini ekleyin

İlk global başlığı şu değerlerle oluşturun:

Alan Değer
Ad Authorization
Tip Dize
Varsayılan Değer Bearer {{token}}
Açıklama Tüm yetkilendirilmiş uç noktalar için Bearer jetonu

Ardından API sürümü için ikinci parametreyi ekleyin:

Alan Değer
Ad X-Api-Version
Tip Dize
Varsayılan Değer 2024-08-01
Açıklama Her istek için sabitlenmiş API sürümü

4. Parametreleri etkinleştirin

Her parametrenin yanındaki etkinleştirme anahtarını açın.

Bu anahtar hata ayıklama sırasında da kullanışlıdır. Örneğin, global Authorization başlığını geçici olarak devre dışı bırakmak için parametreyi silmeniz gerekmez; anahtarı kapatmanız yeterlidir.

5. Yapılandırmayı kaydedin

Ayarları kaydedin. Artık projedeki tüm istekler, uç nokta kendi değerini tanımlamadığı sürece şu başlıkları taşır:

Authorization: Bearer {{token}}
X-Api-Version: 2024-08-01
Enter fullscreen mode Exit fullscreen mode

6. Başlıkların gerçekten gönderildiğini doğrulayın

Yapılandırmanın uygulandığını varsaymayın; doğrulayın.

  1. Projedeki herhangi bir isteği gönderin.
  2. Yanıt konsolunda Gerçek İstek sekmesini açın.
  3. Gönderilen HTTP isteğini inceleyin.

Örnek:

GET /v1/orders/8842 HTTP/1.1
Host: api.yourservice.com
Authorization: Bearer sk_live_7f3a9c2e1b8d4056
X-Api-Version: 2024-08-01
Enter fullscreen mode Exit fullscreen mode

Gerçek İstek sekmesi, değişkenler çözümlendikten sonra isteğin ağa gönderilen son hâlini gösterir. Başlıkları burada görüyorsanız, istekle birlikte gönderilmişlerdir.

Sırrı başlığa yazmayın: değişken kullanın

Authorization başlığında doğrudan jeton kullanmak yerine:

Authorization: Bearer sk_live_7f3a9c2e1b8d4056
Enter fullscreen mode Exit fullscreen mode

şu yapıyı kullanın:

Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

{{token}} ifadesi bir değişkene başvurur. Böylece sır niteliğindeki değer, global parametre tanımından ayrılır.

Bearer şeması RFC 6750 içinde tanımlanır. Sunucuların Authorization başlığını nasıl işlediği için MDN Yetkilendirme başlığı referansını inceleyebilirsiniz.

token değişkenini oluşturun

  1. Sağ üst köşedeki ortam simgesine () tıklayın.
  2. Global Değişkenler bölümünü açın.
  3. token adında yeni bir değişken oluşturun.
  4. Değişkenin değerine Bearer jetonunuzu yazın.
  5. Kaydet seçeneğine tıklayın.

Global parametreniz şu şekilde kalır:

Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

İstek gönderildiğinde Apidog, {{token}} ifadesini aktif ortamın gerçek değeriyle değiştirir. Bu çözümlemeyi tekrar Gerçek İstek sekmesinde kontrol edebilirsiniz.

Önerilen yapı şudur:

  • Global parametre: Başlığın yapısını tutar.
  • Ortam değişkeni: Jeton veya API anahtarı gibi hassas değeri tutar.

Ortamlar ve sır yönetimi için API istemci ortamı ve sır yönetimi rehberine göz atabilirsiniz.

Ortama göre jeton değiştirme

Çoğu projede Geliştirme, Test ve Üretim ortamları farklı sunuculara ve farklı jetonlara ihtiyaç duyar.

Her ortam için ayrı token değerleri tanımlayın:

Ortam token değeri
Development Geliştirme jetonu
Test Test jetonu
Production Üretim jetonu

Daha sonra simgesinin yanındaki Ortamlar açılır menüsünden aktif ortamı değiştirin.

Global başlık aynı kalır:

Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Ancak {{token}} ifadesinin çözümlendiği değer aktif ortama göre değişir. Yetkilendirme türleri hakkında daha fazla bilgi için güvenlik şemaları rehberini inceleyebilirsiniz.

Başlığı yalnızca bir klasörde kullanmak

Global parametreler tüm projeyi etkiler. Ancak bazı başlıklar yalnızca belirli uç noktalar için gerekli olabilir.

Örneğin, yalnızca /admin altındaki uç noktaların şu başlığı taşımasını isteyebilirsiniz:

X-Admin-Scope: full
Enter fullscreen mode Exit fullscreen mode

Apidog'da klasör ayarlarında doğrudan bir “başlık ekle” alanı bulunmaz. Bunun yerine klasör düzeyinde ön istek betiği kullanabilirsiniz.

Klasöre şu betiği ekleyin:

pm.request.headers.add({
  key: 'X-Admin-Scope',
  value: 'full'
});
Enter fullscreen mode Exit fullscreen mode

Bu betik, ilgili klasördeki her istekten önce çalışır ve başlığı ekler. Klasör dışındaki istekler bu başlığı taşımaz.

Bu yöntem bir ayar alanı değil, betik tabanlı bir çözümdür. Bu nedenle proje geneli ihtiyaçlarda global parametreleri; klasörle sınırlı ihtiyaçlarda ön istek betiklerini kullanın.

Daha fazla örnek için Apidog'da ön istek ve sonrası istek betikleri rehberine bakabilirsiniz.

Hangi yöntemi ne zaman kullanmalısınız?

İhtiyaç Kullanılacak yöntem
Tüm projeye ortak başlık eklemek Global parametre — Başlıklar
Jeton, API anahtarı veya ortam değeri saklamak Ortam değişkeni
Başlığı yalnızca belirli bir klasörde kullanmak Klasör düzeyinde ön istek betiği

Örnek eşleştirme:

Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Burada:

  • Authorization global parametredir.
  • {{token}} ortam değişkenidir.
  • Jeton ortam değiştiğinde otomatik olarak değişir.

Dikkat edilmesi gerekenler:

  • Aynı ada sahip global başlıkları tekrar oluşturmayın.
  • Parametre türünün kullanımınıza uygun olduğundan emin olun.
  • Uç nokta düzeyindeki Authorization başlığının global değeri geçersiz kıldığını unutmayın.
  • Başlıkların son hâlini her zaman Gerçek İstek sekmesinden doğrulayın.

Bu özelliklerin belgelerinde belirli bir plan kısıtlaması belirtilmemektedir.

Apidog CLI ile iş akışını otomatikleştirme

Global parametreler ve ortam değişkenleri yalnızca arayüzde çalışmaz; Apidog CLI ile otomatik test koşularında da kullanılabilir.

Kaydedilmiş bir test senaryosunu belirli bir ortamla çalıştırdığınızda, CLI ilgili ortam değişkenlerini kullanır. Böylece GUI'de çalışan yapılandırmanız CI ortamında da aynı şekilde çözülür:

Authorization: Bearer {{token}}
X-Api-Version: 2024-08-01
Enter fullscreen mode Exit fullscreen mode

CLI'yi kurun ve giriş yapın

Node.js v16 veya üstünü kullanarak CLI'yi yükleyin:

npm install -g apidog-cli
apidog login --with-token <ERİŞİM_JETONUNUZ>
Enter fullscreen mode Exit fullscreen mode

Senaryoyu belirli bir ortamda çalıştırın

apidog run --access-token $APIDOG_ACCESS_TOKEN -t <senaryo_kimliği> -e <ortam_kimliği> -r cli
Enter fullscreen mode Exit fullscreen mode

Parametreler:

  • -t: Test senaryosu kimliği
  • -e: Ortam kimliği
  • -r: Raporlayıcı türü (cli, html veya junit)

-e bayrağı, hangi ortam değişkenlerinin kullanılacağını belirler. Bu sayede aynı senaryoyu farklı jetonlar ve sunucu adresleriyle çalıştırabilirsiniz.

Kurulum için Apidog CLI kurulum kılavuzuna, CI entegrasyonu için ise GitHub Actions'da Apidog CLI rehberine bakabilirsiniz.

Sıkça Sorulan Sorular

Global parametreler, uç noktadaki başlığı geçersiz kılar mı?

Hayır. Global parametreler, uç nokta düzeyindeki parametrelerden daha düşük önceliğe sahiptir.

Bir uç nokta kendi Authorization başlığını tanımlıyorsa, o değer kullanılır. Global parametre yalnızca uç noktanın kendi değeri olmadığı durumlarda varsayılan görevi görür.

Jetonu düz metin olarak görünmeden nerede saklamalıyım?

Ortam veya global değişken kullanın.

Global başlığı şu şekilde ayarlayın:

Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Gerçek jetonu ise ortam simgesi () üzerinden oluşturduğunuz token değişkeninde saklayın.

Bir giriş yanıtından jeton alıp değişkende saklamak için JSONPath ile değişken çıkarma rehberini kullanabilirsiniz.

Global başlığın gönderildiğini nasıl doğrularım?

Bir istek gönderin ve yanıt konsolundaki Gerçek İstek sekmesini açın.

Bu görünüm, {{token}} gibi değişkenler çözümlendikten sonra gerçek HTTP isteğini gösterir. Başlığınız burada görünüyorsa, ağa gönderilmiştir.

Başlığı tüm proje yerine yalnızca bir klasöre ekleyebilir miyim?

Evet. Ancak bunu klasör ayarlarında bir başlık alanıyla değil, klasör düzeyinde ön istek betiğiyle yaparsınız:

pm.request.headers.add({
  key: 'X-Admin-Scope',
  value: 'full'
});
Enter fullscreen mode Exit fullscreen mode

Bu betik yalnızca bulunduğu klasördeki istekleri etkiler.

Global parametreler veya ortam değişkenleri için ücretli plan gerekli mi?

Bu özelliklerin belgelerinde katman veya plan kısıtlaması listelenmemektedir. Global parametreler, ortam değişkenleri ve klasör düzeyindeki ön istek betikleri belgelenmiş özelliklerdir.

Sonuç

Apidog'da her isteğe başlık eklemek için uç noktaları tek tek düzenlemeniz gerekmez:

  1. Başlığı Ortam Yönetimi altında global parametre olarak ekleyin.
  2. Hassas değeri {{token}} gibi bir ortam değişkeninde saklayın.
  3. Sonucu Gerçek İstek sekmesinden doğrulayın.
  4. Yalnızca belirli bir klasöre ihtiyaç varsa ön istek betiği kullanın.

Başlangıç için Apidog'u indirin ve ilk global başlığınızı yapılandırın. Ücretsizdir; kredi kartı gerekmez.

Top comments (0)