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.
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:
- API isteklerini repo içinde
.httpveya.restdosyalarında tutarsınız. - Dosyaları Git ile versiyonlarsınız.
- Pull request içinde değişiklikleri incelersiniz.
- 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:
httpyackomutu ile aynı.httpdosyaları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
Kurulumu kontrol edin:
httpyac --version
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}}
Bu örnekte:
-
###satırları istekleri ayırır. -
# @name createUseristeğ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:
.envhttp-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}}"
}
Yerel geliştirme için .env dosyası kullanabilirsiniz:
USERNAME=dev@example.com
PASSWORD=local-password
İpucu:
.envdosyasını Git'e eklemeyin. Bunun yerine.gitignoreiçine alın ve CI tarafında aynı değerleri secret olarak tanımlayın.
Örnek .gitignore:
.env
Yanıttan token alıp sonraki istekte kullanma
Tipik bir API test akışı şöyledir:
- Login isteği gönder.
- Dönen token'ı yakala.
- 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);
});
}}
Burada:
- Login yanıtından
tokenalınır. -
exports.tokenile 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);
});
}}
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);
});
}}
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
Klasördeki tüm istekleri çalıştırma:
httpyac send --all "api/**/*.http"
Belirli ortamla çalıştırma:
httpyac send --all --env staging "api/**/*.http"
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"
Bu akışta:
- Repo checkout edilir.
- Node.js hazırlanır.
- httpYac kurulur.
-
.httpdosyaları 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)