DEV Community

Cover image for Spec-First mi, Design-First mi: Hangi Apidog Modunu Kullanmalısınız?
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Spec-First mi, Design-First mi: Hangi Apidog Modunu Kullanmalısınız?

Apidog'un API'ler modülünde aynı API sözleşmesini oluşturmak için iki çalışma yüzeyi kullanabilirsiniz: görsel formlarla çalışan Tasarım Öncelikli Mod ve Git'e bağlı ham OpenAPI/Swagger dosyasıyla çalışan Spesifikasyon Öncelikli Mod. İkisi de geçerli OpenAPI üretir; fark, sözleşmeyi nasıl yazdığınız, nasıl gözden geçirdiğiniz ve Git iş akışınıza nasıl dahil ettiğinizdir.

Apidog'u bugün deneyin

Bu rehberde Apidog'da tasarım öncelikli ve spesifikasyon öncelikli yaklaşımı pratik açıdan karşılaştıracağız: hangi mod ne yapar, Git ile nasıl çalışır, hangi ekipler için daha uygundur ve modlar arasında nasıl geçiş yapılır. API'ler modülünün sol alt köşesindeki tek düğmeyle mod değiştirebilirsiniz; bu yüzden seçim kalıcı değildir. Ancak doğru varsayılanı seçmek ekip içi sürtünmeyi azaltır.

İki yaklaşım: aynı sözleşme, farklı düzenleme yüzeyi

Her iki yaklaşımın ortak kuralı şudur:

Uygulamayı yazmadan önce API sözleşmesini tanımlarsınız.

Bu sözleşme; backend implementasyonu, testler, mock sunucular ve dokümantasyon için doğruluk kaynağıdır.

Tasarım öncelikli nedir?

Tasarım öncelikli yaklaşımda API sözleşmesini yapılandırılmış bir arayüz üzerinden oluşturursunuz.

Örneğin:

  • HTTP metodu seçersiniz: GET, POST, PUT
  • Path tanımlarsınız: /users/{id}
  • Query/path parametreleri eklersiniz
  • Request ve response şemalarını form veya ağaç düzenleyiciyle oluşturursunuz
  • Örnek yanıtlar tanımlarsınız

OpenAPI çıktısını Apidog arka planda üretir. Bu nedenle YAML sözdizimiyle uğraşmadan sözleşme tasarlayabilirsiniz.

Spesifikasyon öncelikli nedir?

Spesifikasyon öncelikli yaklaşımda sözleşmeyi doğrudan OpenAPI veya Swagger dosyası olarak yazarsınız.

Örnek:

openapi: 3.0.3
info:
  title: User API
  version: 1.0.0
paths:
  /users/{id}:
    get:
      summary: Kullanıcı detayını getir
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Başarılı yanıt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
components:
  schemas:
    User:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
        name:
          type: string
Enter fullscreen mode Exit fullscreen mode

Bu modelde spesifikasyon dosyası, kaynak kod gibi ele alınır: Git'te tutulur, pull request ile incelenir ve satır satır karşılaştırılır.

Bu ayrımı kod öncelikli yaklaşımla karıştırmamak gerekir. Kod öncelikli geliştirmede spesifikasyon, uygulama kodundaki açıklamalardan üretilir. Apidog'daki iki modda ise sözleşme koddan önce gelir. Sadece sözleşmeyi yazma biçiminiz değişir.

Spesifikasyonunuzu sürümlü bir yapıt olarak yönetme yaklaşımı için Git-yerel API iş akışı yazısına da bakabilirsiniz.

Apidog Tasarım Öncelikli Modu

Tasarım Öncelikli Mod, API sözleşmesini görsel arayüzle oluşturmak isteyen ekipler içindir. Uç noktaları, parametreleri, şemaları ve örnekleri formlar üzerinden tanımlarsınız. Apidog arka planda OpenAPI dokümanını üretir.

Bu mod özellikle şu durumlarda kullanışlıdır:

  • Ekipte OpenAPI sözdizimine hâkim olmayan kişiler varsa
  • Ürün, QA ve backend ekipleri aynı sözleşmeyi birlikte gözden geçiriyorsa
  • Yeni bir API'yi hızlıca tasarlamak istiyorsanız
  • Şema hatalarını manuel YAML düzenlemeyle yakalamak istemiyorsanız

Örneğin bir Error şemasını tekrar kullanılabilir bileşen olarak tanımlayıp farklı endpoint yanıtlarında kullanabilirsiniz. Bunu ham YAML içinde elle $ref yazarak yapmak yerine arayüzden seçebilirsiniz.

Tasarım Öncelikli Mod ayrıca branch desteği sunar. Böylece ekipler aynı API'nin farklı tasarım varyasyonları üzerinde paralel çalışabilir ve daha sonra değişiklikleri uzlaştırabilir.

Avantajı:

  • OpenAPI sözdizimi bilmeden API tasarlayabilirsiniz
  • Geçersiz alanlar veya hatalı şema yapıları daha erken yakalanır
  • Yapılandırılmış diff, teknik olmayan paydaşlar için daha okunabilirdir

Dezavantajı:

  • OpenAPI'yi zaten elle yazmaya alışkınsanız formlar ekstra tıklama gibi gelebilir

Apidog Spesifikasyon Öncelikli Modu

Spesifikasyon Öncelikli Mod şu anda beta aşamasındadır. Bu modda API sözleşmesini doğrudan YAML veya JSON olarak yazarsınız. Apidog size IDE benzeri bir kod düzenleyici sunar.

Düzenleyici şu özellikleri destekler:

  • Sözdizimi vurgulama
  • Satır içi doğrulama
  • OpenAPI ve Swagger şemalarına göre otomatik tamamlama
  • Sol kenar çubuğunda path ve component taslağı
  • Git senkronizasyon durum göstergesi

Bu mod, API sözleşmesini doğrudan Git deposunda yönetmek isteyen ekipler için uygundur.

Tipik iş akışı şöyle görünür:

  1. GitHub, GitLab veya Azure DevOps deponuzu bağlayın.
  2. OpenAPI/Swagger dosyanızı Apidog'da açın.
  3. YAML veya JSON dosyasını düzenleyin.
  4. Apidog içinden commit ve push yapın.
  5. Alternatif olarak dosyayı kendi IDE'nizde değiştirip Git'e push edin.
  6. Değişiklikleri Apidog'a geri senkronize edin.

Örnek Git odaklı kullanım:

git checkout -b update-user-api
# openapi.yaml dosyasını düzenleyin
git add openapi.yaml
git commit -m "Update user detail response schema"
git push origin update-user-api
Enter fullscreen mode Exit fullscreen mode

Ardından aynı değişiklikleri Apidog üzerinden görüntüleyebilir, test ve dokümantasyon akışlarında kullanabilirsiniz.

Git entegrasyonu hakkında detaylar için Spesifikasyon Öncelikli Mod belgelerini inceleyebilirsiniz.

Bu yaklaşım, API sözleşmesini diğer kod yapıtlarıyla aynı şekilde yöneten ekipler için uygundur:

  • Pull request ile API değişikliği inceleme
  • CI içinde OpenAPI doğrulaması yapma
  • Sözleşmeyi servis koduyla birlikte sürümleme
  • Araçlar arasında tek bir standart openapi.yaml dosyası kullanma

Bu modelin arkasındaki mantık için kod olarak API spesifikasyonu yazısına bakabilirsiniz.

Yan yana karşılaştırma

İki mod da aynı OpenAPI sözleşmesini üretir. Fark, sözleşmeyi nasıl düzenlediğiniz ve nasıl sürümlendirdiğinizdir.

Özellik Tasarım Öncelikli Mod Spesifikasyon Öncelikli Mod
Düzenleyici Görsel formlar ve şema ağacı IDE tarzı YAML/JSON düzenleyici
Spesifikasyon formatı OpenAPI arka planda oluşturulur OpenAPI/Swagger elle yazılır
Git iş akışı Apidog içinde branch desteği GitHub, GitLab ve Azure DevOps ile iki yönlü senkronizasyon
Doğrulama Form girişleriyle zorlanır Satır içi sözdizimi doğrulama ve otomatik tamamlama
Navigasyon Endpoint listesi ve klasörler Sol kenar çubuğunda otomatik ayrıştırılmış taslak
Öğrenme eğrisi Düşük Daha yüksek; OpenAPI bilgisi gerekir
En uygun ekip Karma yetkinlikte ekipler Spesifikasyonu kod olarak yöneten mühendislik ekipleri

Hangi modu seçmelisiniz?

Tasarım Öncelikli Mod'u seçin, eğer:

  • Ekibinizde OpenAPI uzmanı olmayan kişiler varsa
  • Ürün yöneticileri veya QA ekipleri sözleşmeyi inceleyecekse
  • Yeni API'leri hızlıca tasarlamak istiyorsanız
  • YAML hatalarıyla zaman kaybetmek istemiyorsanız
  • API tasarımını görsel ve yapılandırılmış şekilde tartışmak istiyorsanız

Örnek senaryo:

Bir kullanıcı yönetimi API'si tasarlıyorsunuz. Ürün ekibi alan adlarını, QA ekibi hata yanıtlarını, backend ekibi şema detaylarını gözden geçiriyor. Bu durumda görsel tasarım yüzeyi daha hızlı ortak anlayış sağlar.

Spesifikasyon Öncelikli Mod'u seçin, eğer:

  • OpenAPI dosyanız zaten Git deposunda yaşıyorsa
  • API değişikliklerini pull request üzerinden inceliyorsanız
  • CI/CD içinde spesifikasyon doğrulaması yapıyorsanız
  • Servis kodu ve API sözleşmesini aynı repoda tutmak istiyorsanız
  • YAML/JSON ile çalışmak ekibiniz için doğal bir iş akışıysa

Örnek senaryo:

Backend ekibiniz openapi.yaml dosyasını servis deposunda tutuyor. Her API değişikliği pull request ile geliyor ve CI içinde doğrulanıyor. Bu durumda Spesifikasyon Öncelikli Mod, Apidog'u ayrı bir doğruluk kaynağı yapmaz; aynı dosyaya erişen ek bir çalışma yüzeyi haline getirir.

Pratik orta yol

Birçok ekip şu modeli kullanabilir:

  1. Yeni endpoint'leri Tasarım Öncelikli Mod'da hızlıca tasarlar.
  2. Şemaları ve örnek yanıtları netleştirir.
  3. API olgunlaştığında Spesifikasyon Öncelikli Mod'a geçer.
  4. Sözleşmeyi Git tabanlı inceleme sürecine dahil eder.

Bu iki mod rakip değildir. Aynı API sözleşmesinin iki farklı görünümüdür.

Modlar nasıl değiştirilir?

Apidog'da mod değiştirmek için:

  1. Projenizi açın.
  2. API'ler modülüne gidin.
  3. Sol alt köşedeki mod değiştiriciyi bulun.
  4. Tasarım Öncelikli veya Spesifikasyon Öncelikli Mod'u seçin.

Geçiş yaptığınızda aynı sözleşme diğer düzenleme yüzeyinde açılır.

Dikkat edilmesi gerekenler:

  • Endpoint'ler, şemalar ve örnekler korunur.
  • API'yi yeniden oluşturmazsınız; sadece düzenleme biçimini değiştirirsiniz.
  • Spesifikasyon Öncelikli Mod'da Git senkronizasyonu için önce GitHub, GitLab veya Azure DevOps bağlantısı kurmanız gerekir.
  • Spesifikasyon Öncelikli Mod beta aşamasında olduğu için üretim sözleşmelerinde kullanmadan önce küçük bir projede senkronizasyon davranışını test etmek iyi bir fikirdir.

SSS

Spesifikasyon öncelikli, sözleşme öncelikli ile aynı mı?

Pratikte evet. İki yaklaşım da API sözleşmesini uygulamadan önce yazmayı ve bu sözleşmeyi doğruluk kaynağı olarak kabul etmeyi ifade eder.

Apidog'daki Spesifikasyon Öncelikli Mod, sözleşmenin Git ile senkronize edilen elle yazılmış bir OpenAPI veya Swagger dosyası olduğu sözleşme öncelikli bir iş akışıdır.

Spesifikasyon Öncelikli Mod GitLab ve Azure DevOps ile çalışır mı?

Evet. Spesifikasyon Öncelikli Mod, GitHub ve GitLab ile doğrudan iki yönlü Git senkronizasyonunu destekler. Azure DevOps ise genel Git Bağlantısı üzerinden kullanılabilir.

Tasarım Öncelikli Mod'dan Spesifikasyon Öncelikli Mod'a geçerken verilerim kaybolur mu?

Hayır. Her iki mod da aynı temel API sözleşmesini okur ve yazar. Sol alttaki mod değiştiriciyi kullandığınızda endpoint'leriniz, şemalarınız ve örnekleriniz korunur.

Değişen şey veri değil, düzenleme yüzeyidir.

Sonuç

Ekibinizin nasıl çalıştığına göre varsayılan modu seçin:

  • Görsel tasarım, düşük öğrenme eğrisi ve ekipler arası iş birliği istiyorsanız Tasarım Öncelikli Mod kullanın.
  • OpenAPI dosyasını Git'te, pull request ve CI süreçleriyle yönetmek istiyorsanız Spesifikasyon Öncelikli Mod kullanın.

Kararsızsanız bir sonraki endpoint'inizi iki modda da deneyin. Sözleşme aynı kalır; önemli olan ekibinizin en az sürtünmeyle çalıştığı yüzeyi seçmektir.

Top comments (0)