Bu sayfa, JSON içerikli bir isteği dinamik olarak form data verisine dönüştürüp, HTTP isteği atan Groovy kod örneğini açıklar.
Groovy Script
import org.apache.http.HttpResponse
import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.mime.MultipartEntityBuilder
import org.apache.http.entity.ContentType
import org.apache.http.impl.client.HttpClients
import org.apache.http.util.EntityUtils
import org.apache.http.message.BasicHeader
import groovy.json.JsonSlurper
def post = new HttpPost('http://test.com/api/v1/ServiceRequest/NewRequest')
def entityBuilder = MultipartEntityBuilder.create()
def boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"
entityBuilder.setBoundary(boundary)
//JSON istek JSON Nesnesine dönüştürülür
def slurper = new JsonSlurper()
def params = slurper.parseText(requestBodyTextToTargetAPI)
//JSON'daki her bir key ve değeri için form verisine dinamik ekleme yapılır
params.each { key, value ->
entityBuilder.addTextBody(""+key, ""+value, ContentType.TEXT_PLAIN)
}
//Gerekli ise diğer başlık bilgileri girilir
post.addHeader(new BasicHeader('ApiKey', '##################################'))
post.setEntity(entityBuilder.build())
def client = HttpClients.createDefault()
def response
try {
response = client.execute(post)
//Yapılan isteğin sonucu ile akış kesilerek aşağıdaki değişkenlerin doldurulması ile isteğe yanıt yönlendirilebilir, ya da sonuç üzerinde gerekli iş mantığı çalıştırılır.
statusCodeToTargetAPI = response.getStatusLine().getStatusCode();
requestErrorMessageToTargetAPI = EntityUtils.toString(response.getEntity());
} finally {
response?.close()
client?.close()
}
Açıklama
Bu script şu işlemleri yapar:
- JSON Parse Etme:
JsonSlurper kullanarak gelen JSON request body’yi parse eder.
- Form Data Oluşturma:
MultipartEntityBuilder kullanarak multipart/form-data formatında bir entity oluşturur.
- Dinamik Alan Ekleme: JSON’daki her bir key-value çiftini form data’ya ekler.
- HTTP İsteği Gönderme: Oluşturulan form data ile HTTP POST isteği gönderir.
- Yanıt İşleme: İsteğin sonucunu alır ve gerekli değişkenlere atar.
Kullanım Senaryosu
Bu script, JSON formatındaki bir request’i form data formatına dönüştürerek backend servisine göndermek için kullanılır. Özellikle backend servisinin form data formatında veri beklediği durumlarda faydalıdır.
Bu script, request hattında (Request Policy) çalıştırılmalıdır çünkü requestBodyTextToTargetAPI değişkenini kullanmaktadır.