DEV Community

Cover image for httpYac Nedir
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

httpYac Nedir

httpYac'i aradıysanız, muhtemelen Git'te tutabileceğiniz, VS Code içinde çalıştırabileceğiniz ve CI'da tekrar oynatabileceğiniz düz metin HTTP istekleri yazmak istiyorsunuz. httpYac bunun için kullanılır: .http / .rest dosyalarını çalıştıran, hem VS Code eklentisi hem de Node.js CLI olarak çalışan açık kaynaklı bir HTTP istemcisi. Bu yazıda httpYac'i kurmayı, istek dosyası yazmayı, değişken kullanmayı, assertion eklemeyi ve CI'da çalıştırmayı adım adım ele alacağız. API test sürecini daha geniş çerçevede görmek isterseniz API test kılavuzumuza bakabilirsiniz.

Apidog'u bugün deneyin

httpYac aslında nedir?

httpYac, .http dosya formatı etrafında oluşturulmuş açık kaynaklı bir HTTP istemcisidir. İstekleri düz metin olarak yazarsınız, ardından aynı dosyayı VS Code içinde veya terminalden çalıştırırsınız.

Proje GitHub'da bulunur; resmi dokümantasyon ise httpyac.github.io adresindedir.

Pratik kullanım modeli şudur:

  1. API isteklerini repo içinde .http veya .rest dosyalarında tutarsınız.
  2. Dosyaları Git ile versiyonlarsınız.
  3. Pull request içinde değişiklikleri incelersiniz.
  4. Aynı dosyaları geliştirici makinesinde ve CI pipeline'ında çalıştırırsınız.

httpYac iki ana parçadan oluşur:

  • VS Code eklentisi: Her isteğin üzerinde “Send Request / İstek Gönder” benzeri bir kod merceği gösterir, yanıtları editör içinde görüntüler ve ortam değiştirmeyi kolaylaştırır.
  • CLI: httpyac komutu ile aynı .http dosyalarını terminalde veya CI'da çalıştırır.

Bu yüzden ayrı export/import adımı gerekmez. Commit ettiğiniz dosya, çalıştırdığınız dosyadır.

Kurulum

CLI'ı global olarak kurabilirsiniz:

npm install -g httpyac
Enter fullscreen mode Exit fullscreen mode

Kurulumu kontrol edin:

httpyac --version
Enter fullscreen mode Exit fullscreen mode

VS Code tarafında ise Marketplace'ten httpYac eklentisini kurup .http dosyalarını doğrudan editörde çalıştırabilirsiniz.

.http dosya formatı

Bir .http dosyası, ### ile ayrılmış bir veya daha fazla HTTP isteğinden oluşur.

Örnek:

### Get a user
GET https://api.example.com/users/42
Accept: application/json

### Create a user
# @name createUser
POST https://api.example.com/users
Content-Type: application/json

{
  "name": "Ada Lovelace",
  "email": "ada@example.com"
}

### Use a value from the previous response
GET https://api.example.com/users/{{createUser.response.body.$.id}}
Authorization: Bearer {{token}}
Enter fullscreen mode Exit fullscreen mode

Bu örnekte:

  • ### satırları istekleri ayırır.
  • # @name createUser isteğe isim verir.
  • {{...}} ifadeleri değişkenleri veya önceki yanıtlardan alınan değerleri kullanır.
  • Önceki isteğin yanıtındaki id, sonraki istekte URL içinde kullanılabilir.

Bu format, popüler REST Client eklentisiyle de benzer olduğu için mevcut .http dosyaları genellikle küçük değişikliklerle taşınabilir.

Değişkenler ve ortamlar

Gerçek projelerde URL, kullanıcı adı, token ve ortam bilgilerini isteğin içine sabitlemek istemezsiniz. httpYac bu değerleri farklı kaynaklardan okuyabilir:

  • .env
  • http-client.env.json
  • Dosya içindeki inline değişkenler
  • CI ortam değişkenleri

Basit inline değişken örneği:

@host = https://api.staging.example.com

### Login
# @name login
POST {{host}}/auth/login
Content-Type: application/json

{
  "user": "{{USERNAME}}",
  "pass": "{{PASSWORD}}"
}
Enter fullscreen mode Exit fullscreen mode

Yerel geliştirme için .env dosyası kullanabilirsiniz:

USERNAME=dev@example.com
PASSWORD=local-password
Enter fullscreen mode Exit fullscreen mode

İpucu: .env dosyasını Git'e eklemeyin. Bunun yerine .gitignore içine alın ve CI tarafında aynı değerleri secret olarak tanımlayın.

Örnek .gitignore:

.env
Enter fullscreen mode Exit fullscreen mode

Yanıttan token alıp sonraki istekte kullanma

Tipik bir API test akışı şöyledir:

  1. Login isteği gönder.
  2. Dönen token'ı yakala.
  3. Token ile korumalı endpoint'e istek gönder.

httpYac ile bunu tek dosyada yapabilirsiniz:

@host = https://api.staging.example.com

### Login and capture token
# @name login
POST {{host}}/auth/login
Content-Type: application/json

{
  "user": "{{USERNAME}}",
  "pass": "{{PASSWORD}}"
}

{{
  test("status is 200", () => {
    client.assert.strictEqual(response.statusCode, 200);
  });

  exports.token = response.parsedBody.token;
}}

### Get current user
GET {{host}}/me
Authorization: Bearer {{token}}

{{
  test("status is 200", () => {
    client.assert.strictEqual(response.statusCode, 200);
  });

  test("response has id", () => {
    client.assert.ok(response.parsedBody.id);
  });
}}
Enter fullscreen mode Exit fullscreen mode

Burada:

  • Login yanıtından token alınır.
  • exports.token ile sonraki isteklerde kullanılabilir hale getirilir.
  • Sonraki istek Authorization: Bearer {{token}} başlığını kullanır.
  • Assertion başarısız olursa CLI sıfır olmayan exit code döndürür.

Assertion ekleme

httpYac içinde JavaScript ile response kontrolü yazabilirsiniz. Bu, basit smoke test veya entegrasyon kontrolü için kullanışlıdır.

Örnek status code kontrolü:

### Health check
GET {{host}}/health

{{
  test("health endpoint returns 200", () => {
    client.assert.strictEqual(response.statusCode, 200);
  });
}}
Enter fullscreen mode Exit fullscreen mode

JSON body kontrolü:

### Get user
GET {{host}}/users/42
Accept: application/json

{{
  test("user id is 42", () => {
    client.assert.strictEqual(response.parsedBody.id, 42);
  });

  test("email exists", () => {
    client.assert.ok(response.parsedBody.email);
  });
}}
Enter fullscreen mode Exit fullscreen mode

Bu yapı, tam kapsamlı bir test framework'ü kurmadan API seviyesinde hızlı doğrulama yapmanızı sağlar.

httpYac'i CI'da çalıştırma

CLI, yerelde çalıştırdığınız .http dosyalarını CI pipeline'ına taşımak için kullanılır.

Tek dosya çalıştırma:

httpyac send api/users.http
Enter fullscreen mode Exit fullscreen mode

Klasördeki tüm istekleri çalıştırma:

httpyac send --all "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Belirli ortamla çalıştırma:

httpyac send --all --env staging "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Assertion başarısız olduğunda httpYac sıfır olmayan exit code ile çıkar. Bu da GitHub Actions, GitLab CI veya Jenkins gibi araçlarda build'in kırmızıya düşmesi için yeterlidir.

GitHub Actions örneği

name: API checks

on:
  pull_request:
  push:
    branches:
      - main

jobs:
  httpyac:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install httpYac
        run: npm install -g httpyac

      - name: Run API checks
        env:
          USERNAME: ${{ secrets.API_USERNAME }}
          PASSWORD: ${{ secrets.API_PASSWORD }}
        run: httpyac send --all --env staging "api/**/*.http"
Enter fullscreen mode Exit fullscreen mode

Bu akışta:

  • Repo checkout edilir.
  • Node.js hazırlanır.
  • httpYac kurulur.
  • .http dosyaları CI içinde çalıştırılır.
  • Secret değerler GitHub Actions secrets üzerinden gelir.

httpYac ne zaman kullanılır?

httpYac özellikle geliştirici odaklı, Git merkezli ekipler için uygundur.

Durum httpYac neden uygun
VS Code kullanıyorsunuz İstekleri kodun yanında çalıştırabilirsiniz; bağlam değiştirme azalır.
İstekleri Git'te tutmak istiyorsunuz Düz metin dosyaları kolay diff edilir ve PR içinde incelenir.
Ekibiniz kod yazmaya alışkın Değişkenler, script blokları ve assertion'lar geliştirici dostudur.
CI'da smoke test çalıştırmak istiyorsunuz Aynı dosyalar yerelde ve pipeline'da çalışır.
Zaten REST Client dosyaları kullanıyorsunuz Benzer format geçişi kolaylaştırır.

Daha az uygun olduğu durumlar:

  • Geliştirici olmayan ekip üyeleri istekleri düzenleyecekse
  • Büyük koleksiyonları görsel olarak yönetmek istiyorsanız
  • Ortamları dosya paylaşmadan ekip genelinde senkronize etmeniz gerekiyorsa
  • Mock server, dokümantasyon ve raporlamayı tek yerde istiyorsanız

httpYac ile GUI ve CI platformu karşılaştırması

httpYac bir metin dosyası çalıştırıcısıdır. Apidog ise GUI odaklı bir API platformudur ve CI tarafında da çalışabilir.

Önemli ayrım şu: Apidog, .http dosyalarını doğal olarak çalıştırmaz veya ayrıştırmaz. Eğer doğruluk kaynağınız .http dosyaları ise, httpYac bu dosyaları doğrudan çalıştırdığı için daha uygundur.

Yetkinlik httpYac Apidog
İstek kaynağı Git'teki düz .http / .rest dosyaları Çalışma alanında görsel istekler ve OpenAPI içe aktarma
Düzenleme yüzeyi VS Code veya herhangi bir metin editörü Form alanları ve şema farkındalığı olan görsel oluşturucu
Değişkenler ve ortamlar .env, JSON dosyaları, inline değişkenler Ekip senkronizasyonlu yönetilen ortamlar
Assertion İstek içi JavaScript Görsel assertion'lar ve script desteği
CI yürütme httpyac send apidog run
Mocking ve dokümantasyon Dahili değil Dahili mock sunucusu ve otomatik dokümantasyon
En iyi kullanım Git-yerel metin dosyaları isteyen geliştirici ekipler Tasarım, test, mocking ve dokümantasyonu tek yerde isteyen ekipler

Görsel bir çalışma alanı tercih ediyorsanız Apidog ile istekleri elle .http dosyası yazmadan oluşturabilir, ardından aynı senaryoları CI'da apidog run ile çalıştırabilirsiniz. apidog run referansı, komut seçeneklerini, ortam bayraklarını ve raporlayıcıları açıklar.

Mocking ihtiyacınız varsa REST uç nokta mocking araçları listesini de inceleyebilirsiniz.

Kısa karar matrisi:

  • Dosyalar Git'te olsun, VS Code'da çalışsın, CI'da tekrar oynatılsın diyorsanız httpYac iyi seçimdir.
  • Görsel çalışma alanı, paylaşılan ortamlar, mock server, dokümantasyon ve CI birlikte olsun diyorsanız Apidog daha uygun olabilir.
  • Bazı ekipler ikisini birlikte kullanır: httpYac hızlı yerel kontroller için, Apidog ise ekip genelindeki API çalışma alanı için.

Sıkça sorulan sorular

httpYac ücretsiz mi?

Evet. httpYac, MIT lisansı altında açık kaynaklıdır. VS Code eklentisi ve CLI ücretsiz olarak kullanılabilir. Yerel kullanım veya CI çalıştırmaları için ücretli hesap gerektirmez.

httpYac, REST Client eklentisinden nasıl farklıdır?

İkisi de benzer .http dosya formatını kullanır. Bu nedenle dosyalar büyük ölçüde taşınabilir.

httpYac'in farkı şudur:

  • Bağımsız CLI sağlar.
  • CI'da başsız çalıştırılabilir.
  • Ortam yönetimi ve script/assertion modeli daha geniştir.

Sadece VS Code içinde istek gönderecekseniz iki araç da iş görebilir. Ancak aynı dosyaları pipeline'da çalıştırmanız gerekiyorsa httpYac'in CLI'ı belirleyici avantajdır. Editör tabanlı araçlar için API testi için VS Code eklentileri listesine bakabilirsiniz.

httpYac, Postman'ın yerini alabilir mi?

Geliştirici odaklı bir ekipte, düz metin istekler, Git versiyonlama ve CI çalıştırmaları istiyorsanız httpYac Postman ile yapılan birçok işi karşılayabilir.

Ancak şu ihtiyaçlar varsa GUI odaklı bir platform daha uygun olabilir:

  • Paylaşılan koleksiyonlar
  • Görsel çalışma alanı
  • Yönetilen ortamlar
  • Dahili mocking
  • Otomatik dokümantasyon

Alternatifleri API test istemcileri özetinde karşılaştırabilirsiniz.

httpYac, GraphQL ve gRPC'yi destekliyor mu?

httpYac, REST dışında GraphQL isteklerini ve bazı ek protokol/senaryoları destekler. Destek kapsamı sürümlere göre değişebildiği için güncel listeyi resmi dokümantasyondan kontrol etmek gerekir.

REST için .http formatı; HTTP metodları, header'lar, body, değişkenler ve kimlik doğrulama akışları için pratik bir temel sunar.

Sonuç

httpYac, net bir problemi çözer: HTTP isteklerini düz metin dosyalarında tutmak, VS Code'da çalıştırmak ve aynı dosyaları CI'da tekrar oynatmak. Git-yerel modeli, script desteği ve ücretsiz CLI'ı sayesinde geliştirici ağırlıklı ekipler için güçlü bir seçenektir.

Eğer istekleri görsel olarak oluşturmak, ortamları ekip içinde paylaşmak, endpoint'leri mock etmek, dokümantasyon üretmek ve testleri CI'da çalıştırmak istiyorsanız Apidog bu akışı tek çalışma alanında birleştirir. Apidog'u indirebilir, testlerinizi apidog run ile çalıştırabilir veya httpYac'i hızlı yerel kontroller için kullanmaya devam ederken Apidog'u ekip çalışma alanı olarak konumlandırabilirsiniz.

Top comments (0)