> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API Creator ile Scriptten API oluşturma

> Script-2-API ile function-as-a-service yaklaşımıyla REST API oluşturabilirsiniz. Endpoint iş mantıklarını Javascript veya Groovy diliyle yazabilir, gelen mesaj öğelerini script ile işleyip sonucu istemciye gönderebilirsiniz

<CardGroup cols={2}>
  <Card title="Çalışma Mantığı" icon="code">
    Gelen mesajın öğeleri (başlık, parametre, gövde) seçilen script dili ile işlenip sonucunu istemciye gönderilir.
  </Card>

  <Card title="Okuma ve Yazma Kuralları" icon="lock">
    Gelen istek mesajın orijinal hali üzerinde değişiklik yapılamaz, bu veriler üzerinde sadece okuma yapılabilir. İstemciye dönecek yanıt ise script içerisinde hazırlanır.
  </Card>
</CardGroup>

## Yeni Script-2-API Oluşturma

<Steps>
  <Step title="Menüden Script-2-API Sayfasına Gidin">
    Ana menüde **Geliştirme → API Oluşturucu → Script-2-API** öğesi seçilir.

    <img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-olusturma-ekrani.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=7ec94b7cd368ade5eec00b9ab7a86970" alt="Script-2-API Oluşturma Ekranı" width="1000" data-path="images/develop/api-proxy-olusturma/script-api-olusturma-ekrani.png" />
  </Step>

  <Step title="Yeni API Oluşturun">
    Açılan arayüzde sağ üstteki **+Oluştur** tuşuna tıklanır.
  </Step>

  <Step title="API Bilgilerini Doldurun">
    Yeni oluşturulacak *API* için gerekli alanlar doldurularak sağ üstteki **→Kaydet ve Devam** tuşuna tıklanmasıyla *API* oluşturma işi başlamış olur.

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/api-proxy-olusturma/script2api-new.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=4ceb185834c71b76e2af6155fd103196" alt="API Bilgilerini Doldurma" width="1000" data-path="images/develop/api-proxy-olusturma/script2api-new.png" />
  </Step>

  <Step title="Endpoint Ekleyin">
    API kaydedildikten sonra API'ye endpoint tanımlanmasına başlanır. Hiç endpoint yoksa ilk defa eklemek için API içerisinde ekle tuşuna basılır, eğer en az bir tane varsa endpoint'ler bölümünde çıkan ekle tuşuna basılır.

    <img src="https://mintcdn.com/apinizer/WZR0m-u7Czbvjywf/images/develop/api-proxy-olusturma/script2api-neww.png?fit=max&auto=format&n=WZR0m-u7Czbvjywf&q=85&s=d1bfc411e81381670957c7d67c7a2feb" alt="Endpoint Ekleme" width="1000" data-path="images/develop/api-proxy-olusturma/script2api-neww.png" />
  </Step>
</Steps>

## Endpoint Oluşturma

*Endpoint* tanımlamak için aşağıdaki bilgiler girilir:

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-endpoint-olusturma.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=fb6882de93a1bfc47c2f6982d699e9b2" alt="Endpoint Oluşturma Ekranı" width="1000" data-path="images/develop/api-proxy-olusturma/script-api-endpoint-olusturma.png" />

Endpoint oluşturma konfigürasyonu için kullanılan alanlar aşağıda kategorilere ayrılarak açıklanmıştır:

<AccordionGroup>
  <Accordion title="Temel Bilgiler">
    <CardGroup cols={2}>
      <Card title="HTTP Metot" icon="list">
        **Alan:** HTTP Metot (HTTP Method)

        REST API'ler için HTTP Metodu seçilir: GET, POST, PUT, HEAD, OPTIONS, DELETE, PATCH, TRACE, ALL
      </Card>

      <Card title="Ad/URL" icon="tag">
        **Alan:** Ad/URL (Name/URL)

        Endpoint erişim adresidir. API Proxy oluşturulduğunda endpointe bu adres üzerinden erişilir.
      </Card>

      <Card title="Açıklama" icon="file-lines">
        **Alan:** Açıklama

        API endpoint'inin tanım bilgisidir.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Script Ayarları">
    <CardGroup cols={2}>
      <Card title="Script Tipi" icon="code">
        **Alan:** Script Tipi (Script Type)

        Yazılacak olan Script'in tipidir. Javascript veya Groovy olabilir.
      </Card>

      <Card title="Script" icon="code">
        **Alan:** Script (Script)

        Çalıştırılacak olan script bilgisidir.
      </Card>

      <Card title="Değişkenler" icon="slider">
        **Alan:** Değişkenler (Variables)

        İstek ve yanıt hattında erişimi gerçekleştirebilecek read-only ve write-only değişkenlerin listesidir. İlgili değişkene tıklandığında, değişken Script alanında imlecin bulunduğu noktaya eklenir.
      </Card>

      <Card title="Deneme Tuşu" icon="play">
        **Alan:** Deneme Tuşu (Try It)

        Çalıştırılacak olan scriptin denemesinin yapılabilmesi için yeni bir pencere açılmasını sağlar.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Değişkenler (Variables)

Yapılacak olan okuma ve oluşturma işlemleri için mesajın başlık, parametre ve gövde kısımlarına script üzerinde erişim için çeşitli anahtar kelimeler kullanılmıştır.

<AccordionGroup>
  <Accordion title="Client → Apinizer (İstek Verileri)">
    İstemciden Apinizer'a gelen verilere erişim için kullanılan değişkenler:

    <CardGroup cols={2}>
      <Card title="Başlık (Header)" icon="heading">
        **Değişken:** `requestHeaderMapFromClient`

        **Veri Tipi:** `Map<String, String>`

        **İşlem:** Okuma

        İstek başlıklarını okumak için kullanılır.
      </Card>

      <Card title="Parametre (URL Parameter)" icon="slider">
        **Değişken:** `requestUrlParamMapFromClient`

        **Veri Tipi:** `Map<String, String>`

        **İşlem:** Okuma

        URL parametrelerini okumak için kullanılır.
      </Card>

      <Card title="Gövde (Body)" icon="file-lines">
        **Değişken:** `requestBodyTextFromClient`

        **Veri Tipi:** `String`

        **İşlem:** Okuma

        İstek gövdesini okumak için kullanılır.
      </Card>

      <Card title="Mesaj Bilgisi (Context)" icon="info">
        **Değişken:** `contextValues`

        **Veri Tipi:** `String`

        **İşlem:** Okuma

        Mesaj bilgilerine erişim için kullanılır.
      </Card>

      <Card title="Özel Değişken" icon="slider">
        **Değişken:** `customVariableMap`

        **Veri Tipi:** `Map<String, String>`

        **İşlem:** Okuma, Yazma

        Özel değişkenleri okumak ve yazmak için kullanılır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Apinizer → Client (Yanıt Verileri)">
    Apinizer'dan istemciye gönderilecek verileri oluşturmak için kullanılan değişkenler:

    <CardGroup cols={2}>
      <Card title="Başlık (Header)" icon="heading">
        **Değişken:** `responseHeaderMapToClient`

        **Veri Tipi:** `Map<String, String>`

        **İşlem:** Yazma

        Yanıt başlıklarını oluşturmak için kullanılır.
      </Card>

      <Card title="Gövde (Body)" icon="file-lines">
        **Değişken:** `responseBodyTextToClient`

        **Veri Tipi:** `String`

        **İşlem:** Yazma

        Yanıt gövdesini oluşturmak için kullanılır.
      </Card>

      <Card title="Durum Kodu (Status Code)" icon="code">
        **Değişken:** `statusCodeToClient`

        **Veri Tipi:** `Integer`

        **İşlem:** Yazma

        HTTP durum kodunu ayarlamak için kullanılır.
      </Card>

      <Card title="Mesaj Bilgisi (Context)" icon="info">
        **Değişken:** `contextValues`

        **Veri Tipi:** `String`

        **İşlem:** Okuma

        Mesaj bilgilerine erişim için kullanılır.
      </Card>

      <Card title="Özel Değişken" icon="slider">
        **Değişken:** `customVariableMap`

        **Veri Tipi:** `Map<String, String>`

        **İşlem:** Okuma, Yazma

        Özel değişkenleri okumak ve yazmak için kullanılır.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

<Info>
  Script tipi Groovy ise:

  * Mesaj gövdesi JSON olan durumda **JsonSlurper**
  * Mesaj gövdesi XML olan durumda **XMLSlurper**

  kullanılması mesaj işleme işlemini oldukça kolaylaştırır.
</Info>

## Script-2-API'den API Proxy Oluşturma

API'nin tanımlamaları bittikten sonra sıra bu API'yi API Proxy olarak açmaya gelir.

<Info>
  Script-2-API'den API Proxy oluşturmak için Script-2-API ile oluşturulan API'nin en az bir tane *endpoint'i* olmalıdır.
</Info>

Script-2-API'yi API Proxy olarak erişime açabilmek için aşağıdaki görselde **Proxy Oluştur (Create Proxy)** tuşuna basılır.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-proxy-olustur-butonu.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=51527887f18491577a20741d62c6fc58" alt="Proxy Oluştur Butonu" width="1000" data-path="images/develop/api-proxy-olusturma/script-api-proxy-olustur-butonu.png" />

Gelen ekranda API Proxy için gerekli alanları girerek **Kaydet** butonuna tıklayarak API Proxy oluşturulur.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-proxy-olusturma-ekrani.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=09855b6ebcfc3df5e8c77ed60e7b3f81" alt="API Proxy Oluşturma Ekranı" width="1000" data-path="images/develop/api-proxy-olusturma/script-api-proxy-olusturma-ekrani.png" />

Bu adımdan sonra yapılabilecekler API Proxy dokümanı ile aynıdır. Detaylı bilgi için [API Proxy Oluşturma](/tr/develop/api-proxy-olusturma/api-proxy-olusturma) sayfasını inceleyebilirsiniz.

<Note>
  Bir Script-2-API için birden fazla API Proxy oluşturabilirsiniz.
</Note>

## Yükle (Deploy)/Yeniden Yükle (Redeploy)

Script-2-API ile oluşturulan API Proxy'leri, API Proxy'ler sayfasından veya Script-2-API sayfasında ilgili API'yi seçerek yükleme durumunu yönetebilirsiniz.

Script-2-API sayfasından yönetmek için sayfanın üstünde yer alan **API Proxy'leri Yönet (Manage API Proxies)** linkine tıklanınca açılan pencereden faydalanılır. Açılan pencerede bu API'den oluşturulan API *Proxy*'ler için Yükleme (Deploy), Yeniden Yükleme (Redeploy) ve Kaldırma (Undeploy) işlemlerini yapabilirsiniz. Bu konuyla ilgili daha detaylı bilgi almak için Revizyon, Yükleme, Yeniden Yükleme, Kaldırma sayfalarımızı ziyaret edebilirsiniz.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-proxy-yonetme.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=c8a3dfa077bc398f6bdaf2a5ddadeca7" alt="API Proxy'leri Yönetme" width="600" data-path="images/develop/api-proxy-olusturma/script-api-proxy-yonetme.png" />

Yukarıdaki işlemden sonra onaylama yapmak gereklidir. Yükleme işlemiyle ilgili bilgileri oluşturup **(Yükle) Deploy** butonuna tıklanır.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-deploy-onay.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=87ded99822a966b31bce4b66dc3cbd0a" alt="Yükleme Onay Ekranı" width="600" data-path="images/develop/api-proxy-olusturma/script-api-deploy-onay.png" />

<Info>
  Script-2-API'ye yeni bir endpoint eklendiğinde veya endpoint içinde değişiklik yapıldığında değişikliğin geçerli olabilmesi için bu API'den oluşturulan tüm API Proxy'lerin yeniden yüklenmesi gerekir.
</Info>

Yeni bir endpoint eklediğinizde ve ya mevcut bir endpoint'i güncellediğinizde aşağıdaki gibi bir bilgilendirme gelecektir.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-yeniden-yukleme-bilgi.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=794dcf80a391f50f77142313b78f03c5" alt="Yeniden Yükleme Bilgilendirmesi" width="500" data-path="images/develop/api-proxy-olusturma/script-api-yeniden-yukleme-bilgi.png" />

**Yeniden Yükle (Redeploy)** diyerek değişikliklerin API Proxy'lere uygulanması sağlanır.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-redeploy-onay.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=426ef2d83ecd76753677b3ae36d77780" alt="Yeniden Yükleme Onay Ekranı" width="600" data-path="images/develop/api-proxy-olusturma/script-api-redeploy-onay.png" />

Yukarıdaki işlemden sonra onaylama yapmak gereklidir. Yeniden yükleme işlemiyle ilgili bilgileri oluşturup **(Yeniden Yükle) Redeploy** butonuna tıklanır.

Script-2-API sayfasından API Proxy'nin ismine tıklanarak API Proxy'e gidilir.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-proxy-link.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=4ad37edeeb50735ded2209b64f3ad7f7" alt="Script-2-API Sayfasından API Proxy'ye Gitme" width="1000" data-path="images/develop/api-proxy-olusturma/script-api-proxy-link.png" />

Benzer şekilde, API Proxy sayfasından Script-2-API sayfasına gitmek için aşağıdaki gibi API Proxy'deki Script-2-API ismine tıklayarak gidilir.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-geri-link.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=0882c36cf7fa36901d611feb2684ae87" alt="API Proxy Sayfasından Script-2-API'ye Gitme" width="600" data-path="images/develop/api-proxy-olusturma/script-api-geri-link.png" />

## Script-2-API Silme

Bir Script API silindiğinde ona bağlı olan tüm API Proxy'ler önce kaldırılır (undeploy) sonra silinir.

<img src="https://mintcdn.com/apinizer/ZcdqzXb0ZF1OeNQr/images/develop/api-proxy-olusturma/script-api-silme-uyarisi.png?fit=max&auto=format&n=ZcdqzXb0ZF1OeNQr&q=85&s=d5b7c779595a7e79dfbf0111030af496" alt="Script-2-API Silme Uyarısı" width="500" data-path="images/develop/api-proxy-olusturma/script-api-silme-uyarisi.png" />
