Bu makaledeki modül: Integration Flow Helper
Postman veya OpenAPI'den SAP CPI HTTP alıcısına
Bir OpenAPI veya Swagger belirtimini ya da Postman isteğini SAP CPI HTTP alıcısına dönüştürün: adres, yol ve sorgu parametreleri, header'lar ve ifadeler içeren bir JSON gövdesi.

SAP CPI'dan bağlandığınız REST API'lerin çoğu bir OpenAPI veya Swagger dosyası, bir Postman koleksiyonu ya da ikisiyle birlikte gelir. HTTP alıcı adaptörünün ihtiyaç duyduğu her şey bunlarda vardır: sunucu, yol, parametreler, header'lar ve gövdenin yapısı. Yapılacak iş, her parçayı tek bir karakter kaybetmeden doğru alana taşımaktır.
Bu makale bir OpenAPI işlemini ve bir Postman isteğini adım adım HTTP alıcısıyla eşliyor ve ilk çağrının en sık başarısız olmasına yol açan ayrıntıları listeliyor.
HTTP alıcısının ihtiyaç duydukları
- Address: işlemin tam URL'si. Bir yol parametresi için
${property.orderId}gibi Simple ifadeleri içerebilir. - Query:
?olmadan sorgu dizesi, örneğinnotify=true. - Method: GET, POST, PUT, PATCH veya DELETE.
- Authentication: yok, Basic, Client Certificate, OAuth2 Client Credentials ve diğerleri; kimlik bilgileri kanala yazılmaz, tenant'ta saklanır.
- Request Headers: API'ye gönderilecek mesaj header'larının adları,
|ile ayrılmış. - Gövde: mesaj gövdesi adaptöre ulaştığında ne ise odur; genellikle bir Content Modifier'da veya bir eşlemede oluşturulur.
Bir OpenAPI veya Swagger işlemi nasıl okunur
Bir sipariş için sevkiyat oluşturan şu OpenAPI 3 işlemini ele alalım:
openapi: 3.0.3
servers:
- url: https://api.example.com/v1
paths:
/orders/{orderId}/shipments:
post:
parameters:
- { name: orderId, in: path, required: true, schema: { type: string } }
- { name: notify, in: query, schema: { type: boolean } }
- { name: X-Request-Id, in: header, schema: { type: string } }
requestBody:
content:
application/json:
schema:
type: object
properties:
carrier: { type: string }
trackingNumber: { type: string }- Address: sunucu URL'sini ve yolu birleştirin. Swagger 2.0'da sunucu
schemes,hostvebasePatholarak bölünmüştür. {orderId}gibi yol parametreleri: her birini bir ifadeyle değiştirin, örneğin${property.orderId}.- Sorgu parametreleri (
in: query): bunları Query alanına taşıyın. - Header parametreleri (
in: header): bunları bir Content Modifier'da mesaj header'ı olarak ayarlayın ve adlarını Request Headers içinde listeleyin. - İstek gövdesi: JSON'u
requestBodyşemasına göre bir Content Modifier'da oluşturun. - Güvenlik şemaları: tenant'ta karşılık gelen kimlik bilgisini oluşturun ve Authentication içinde seçin.
Sonuç: bir Content Modifier ve kanal
Bu işlem için adaptörden önceki Content Modifier ve HTTP alıcı kanalı şöyle görünür:
Content Modifier
Header Content-Type application/json
Header X-Request-Id ${property.requestId}
Body {
"carrier": "${property.carrier}",
"trackingNumber": "${property.trackingNumber}"
}
HTTP receiver
Address https://api.example.com/v1/orders/${property.orderId}/shipments
Query notify=true
Method POST
Request Headers Content-Type|X-Request-IdContent Modifier, Content-Type header'ını application/json olarak, X-Request-Id header'ını ve JSON gövdesini, akışta daha önce ayarlanmış exchange property'lerden alınan değerlerle ayarlar. Request Headers, API'nin alması gereken iki header'ı tam olarak listeler; böylece diğer tüm header'lar tenant'ta kalır.
Bir Postman isteğinden
Bir Postman isteği aynı bilgileri farklı yerlerde tutar:
- URL çoğu zaman
{{baseUrl}}gibi bir Postman değişkeniyle başlar. SAP CPI'da aynı{{…}}söz dizimi, dağıtım sırasında ayarlanan dışsallaştırılmış bir parametreyi belirtir: test ile üretim arasında değişen temel URL için doğal yer burasıdır. - Yol değişkenleri (
:orderId) ve sorgu parametreleri, daha önce olduğu gibi Address ve Query alanlarına gider. - Headers sekmesi, Content Modifier header'larına ve bunların Request Headers içindeki adlarına dönüşür.
- Ham (raw) bir JSON gövdesi, her test değeri bir ifadeyle değiştirilmiş olarak Content Modifier gövdesine dönüşür.
- Authorization sekmesi hangi kimlik doğrulamanın ayarlanacağını söyler. Postman'deki bir token'ı iFlow'a kopyalamayın; kimlik bilgilerini tenant'ta saklayın.
İlk çağrıyı başarısız kılan ayrıntılar
*değerli Request Headers, dahili olanlar da dahil tüm mesaj header'larını API'ye gönderir. Yalnızca API'nin beklediği header'ları listeleyin.- Eksik veya yanlış bir
Content-Typeheader'ı: birçok API,application/jsonolmadan gönderilen bir JSON gövdesini reddeder. - URL'deki değerler URL için güvenli olmalıdır: boşluk veya eğik çizgi içeren bir kimliğin adrese girmeden önce kodlanması gerekir.
- Hata yanıtları: Throw Exception on Failure kapalıyken akış devam eder ve
${header.CamelHttpResponseCode}durum kodunu tutar; böylece hataları bir Router işleyebilir. - Çoğu API'de JSON gövdesindeki alan adları büyük/küçük harfe duyarlıdır; bunları ezberden değil, şemadan kopyalayın.
Bir OData hizmeti mi çağırıyorsunuz? OData alıcısı makalesine bakın. Adres ve gövdedeki ifadeler için SAP CPI'da Camel Simple ifadeleri makalesine bakın.
Kitegra nasıl yardımcı olur
Kitegra tarayıcı uzantısı API belirtimiyle ilgili işi sizin yerinize üstlenir. Ona JSON veya YAML biçiminde bir OpenAPI ya da Swagger dosyası veya bir Postman koleksiyonu verin; SAP Integration Suite tasarımcısında o belirtimden URL'ler, yollar, sorgu parametreleri, istek header'ları ve örnek JSON gövdeleri önerir.
Belirtim tarayıcınızda kalır: Kitegra API belirtimlerini asla saklamaz. Uzantı bir iFlow'un içeriğini asla kaydetmez, dağıtmaz veya düzenlemez; tenant'ınız yalnızca, kapatılabilen ve adı belli dört işlemden birine tıkladığınızda değişir.
Kendi iFlow'unuzun HTTPS uç noktasını aynı şekilde çağırmak için bir HTTPS iFlow'unu service key ile test etme makalesine bakın.
Kitegra hesabı olmadan modül başına 5 iFlow'da çalışır. Free planı 50, Starter 100 ve Pro 300 iFlow'u kapsar. Ekip planlarında her üye Pro alır; Startup Team'de modül başına 300 iFlow vardır, Growth Team ve Scale Team'de ise sınır yoktur. Kitegra'in lansman döneminde, oturum açan herkes Free planında bile tüm araçları kullanabilir. Planları karşılaştırın.
Bir sonraki iFlow'unuzda deneyin
Kitegra'ın SAP Integration Suite tasarımcısında neler yaptığını okuyun veya onu Kitegra'in diğer Chrome uzantılarıyla birlikte görün.
Sık sorulan sorular
SAP CPI bir OpenAPI dosyasını HTTP alıcısına içe aktarabilir mi?
HTTP alıcı kanalı alan alan yapılandırılır: adres, sorgu, yöntem, kimlik doğrulama ve istek header'ları. Belirtim her alana ne yazılacağını söyler; gövde ise bir Content Modifier'da veya bir eşlemede oluşturulur.
HTTP alıcısının adresine bir yol parametresi nasıl eklenir?
Parametreyi bir ifadeyle değiştirin, örneğin https://api.example.com/v1/orders/${property.orderId}/shipments.
API'ye özel bir header nasıl gönderilir?
Onu bir Content Modifier'da mesaj header'ı olarak ayarlayın ve adını HTTP alıcısındaki Request Headers alanına ekleyin. Birden fazla ad | ile ayrılır.
Request Headers içinde * kullanmalı mıyım?
Yalnızca API'nin tüm mesaj header'larını alması gerekiyorsa. Gereken header'ları listelemek, dahili olanların gönderilmesini önler.
{{baseUrl}} gibi Postman değişkenleri SAP CPI'da neye dönüşür?
İyi bir karşılık, aynı {{…}} söz dizimini kullanan ve dağıtım sırasında ayarlanan dışsallaştırılmış bir parametredir; böylece test ve üretim farklı URL'ler kullanabilir.
Çağrıdan sonra HTTP durum kodunu nasıl okurum?
Throw Exception on Failure seçeneğini kapatın ve ${header.CamelHttpResponseCode} değerini okuyun; örneğin bir Router koşulunda.