> ## 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.

# MySQL Database Üzerinden DB-2-API Oluşturulması

> MySQL veritabanı bağlantısı üzerinden Apinizer'da DB-2-API oluşturmayı açıklar. Veritabanı bağlantısının kurulmasından endpoint'lerin tanımlanmasına, API Proxy'ye dönüştürülmesinden test edilmesine kadar tüm adımları içerir.

Aşağıdaki grafikte yer alan numaralandırmalar işlemlerin **yapılış sırasına aittir.**

* **API Client**, Apinizer üzerinde yer alan **DB-2-API** içerisinde bulunan bir **endpoint'e** istekte bulunur.
* **Apinizer** bu isteği **veri tabanına** gönderir, veri tabanı üzerinde ilgili **endpoint'e** ait sorgu çalıştırılır.
* **Veri tabanından ilgili sorguya** ait yanıt **Apinizer'a** gelir.
* **Apinizer, API Client'a yanıtı gönderir.**

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db-ana.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=2b3ec1776a9a0b18f71366f5d73f45b6" alt="Veri tabanı bağlantısı sayfası" width="1000" data-path="images/tutorials/db-ana.png" />

<Steps>
  <Step title="Veritabanı bağlantısının kurulması">
    MySQL veritabanı bağlantısının Apinizer'da tanımlanması.
  </Step>

  <Step title="Endpoint'lerin oluşturulması">
    GET, POST, PUT, DELETE işlemleri için endpoint'lerin tanımlanması.
  </Step>

  <Step title="API Proxy'ye dönüştürme">
    DB-2-API'nin API Proxy formatına dönüştürülmesi.
  </Step>

  <Step title="Test edilmesi">
    Oluşturulan endpoint'lerin test edilmesi.
  </Step>
</Steps>

## Veri Tabanı Bağlantısının Gerçekleştirilmesi

**Connection Management** menüsü altında yer alan **Database** ifadesi seçilir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db1.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=3b437871a496f4f55c29bda9a56dba51" alt="Veri tabanı bağlantısı sayfası" width="200" data-path="images/tutorials/db1.png" />

<Info>
  Daha önceden herhangi bir veri tabanı bağlantısı yapılmadığı için bu sayfa boş gözükmektedir, sağ üst köşede yer alan **Create** butonuna tıklanır.
</Info>

MySQL veri tabanı bağlantısı oluşturulmaya başlanır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db2.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=39e8bb84250fdd2d51b5c634c8cac228" alt="MySQL veri tabanı bağlantısı oluşturma sayfası" width="1000" data-path="images/tutorials/db2.png" />

Bu sayfada yer alan girdi alanları incelenecek olursa;

* **Name** alanı ile bağlantısını sağladığınız veri tabanının ismi yazılır.
* **Description** alanı ile oluşturulacak olan bağlantıya açıklama yapılır.
* **Database Type** ile oluşturulacak bağlantının tipi seçilir.
* **JDBC URL** alanı ile bağlanılacak olan veri tabanının adresi yazılır, örnek bağlantı cümlesi de input alanı içerisinde yer almaktadır.
* **Username** alanı ile bağlanılacak veri tabanı için girilmesi gereken kullanıcı adı, **Password** alanına da bağlantı esnasında girilmesi gereken parola bilgisi yazılır.
* Bu alanlar haricinde kalan diğer alanlar hakkında bilgi için [veritabanı bağlantısı](/tr/integrations/baglanti-yonetimi/database) sayfasına bakabilirsiniz.

<Tip>
  Gerekli olan veri tabanı bağlantı bilgileri girildikten sonra yukarıda ortada yer alan **Test Connection** butonu ile bağlantı test edilir, **Save And Deploy** butonuna tıklanır ve bağlantı oluşturulur.
</Tip>

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db3.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=cbb8577b59ffeb187fad07e942685555" alt="Veri tabanı bağlantısı kaydedildikten sonra" width="1000" data-path="images/tutorials/db3.png" />

Kaydettikten sonra ise elde edilecek ekran görüntüsü aşağıdaki görselde yer almaktadır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db3-new.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=28c8f6563563f45b3db331e3d9d9c8d0" alt="Veri tabanı bağlantısı kaydedildikten sonra" width="1000" data-path="images/tutorials/db3-new.png" />

## DB-2-API'nin Oluşturulması

Veri tabanı bağlantısı gerçekleştirildikten sonra DB-2-API oluşturma aşamasına geçilir.

**Development** menüsünde bulunan **API Creator** menüsünün altında yer alan **DB-2-API** seçeneği seçilir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db4.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=31a45a71d1f4b664c8634fe66b213f35" alt="DB-2-API seçeneği seçildikten sonra boş sayfa" width="200" data-path="images/tutorials/db4.png" />

<Info>
  **DB-2-API** seçeneği seçildikten sonra ekrana boş bir sayfa gelmektedir. Bunun sebebi daha önce herhangi bir DB-2-API oluşturulmamış olmasıdır.
</Info>

Bu ekranda sağ üst köşede yer alan **Create** butonuna tıklanarak DB-2-API oluşturmaya başlanır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db5.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=8d69c32be8ffdd1182c30584ee0aab75" alt="Create butonuna tıkladıktan sonra çıkan sayfa" width="1000" data-path="images/tutorials/db5.png" />

**Create** butonuna tıkladıktan sonra karşımıza çıkan sayfa aşağıda yer almaktadır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db5-new.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=b314bf01a92bcd44edc30c52a88744a2" alt="Create butonuna tıkladıktan sonra çıkan sayfa" width="1000" data-path="images/tutorials/db5-new.png" />

**Create** butonuna tıkladıktan sonra karşımıza çıkan sayfada:

* **Name** alanından **DB-2-API**'ye bir isim verilmesi gereklidir. Bu alan boş geçilemez bir alandır.
* İsteğe göre açıklama eklenebilir.

**Name** alanı doldurulduktan sonra **Save and Next** butonuna tıklanır ve bir sonraki adıma geçiş yapılır.

Bu sayfada artık DB-2-API oluşturabilir.

Kırmızı dikdörtgen içerisinde yer almakta olan **Add** butonuna tıklayarak ilk endpoint oluşturulur.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db6-yeni.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=d4d72f79f8f47411d830bbcb382f13a7" alt="Add butonuna tıklayarak endpoint oluşturma" width="1000" data-path="images/tutorials/db6-yeni.png" />

Endpoint oluşturma ekranında yer alan alanlar:

* **HTTP Method** alanı ile oluşturulacak olan endpoint'in **(GET,POST,DELETE,PUT vb.)** metotları seçilir.
* **Name/URL** alanına endpoint'in **ismi** girilir.
* **Description** alanına endpoint ile ilgili **açıklama** eklenebilir.
* **Connection Pool Definition** alanı ile bağlantısı sağlanacak olan veri tabanı seçilir.
* **Timeout** alanı ile oluşturulan sorgunun kaç saniye sonra **timeout** olacağı belirtilir.
* **Type of SQL Statement** ifadesi ile yazılacak olan **SQL sorgusunun hangi tipte** oluşturulacağı seçilir.
* **Enter SQL Statement** alanına ise yazılacak **SQL sorgusu** girilir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db6.2.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=129f6dce870cd6c96d8b9239cab97aaf" alt="GET endpoint için alanlar" width="1000" data-path="images/tutorials/db6.2.png" />

### GET Endpoint: /getSalariesByEmpNo

İlk olarak /getSalariesByEmpNo isimli endpoint oluşturulacaktır.

Bu endpoint'in kullanılabilmesi için **Query** tipinde bir parametre gönderilmesi gereklidir.

Yukarıda tek tek anlatılan kısımlara bu endpoint'de kullanılacak alanlar girilmiştir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db7.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=fc1312d0c6886d2793b9d9e84c9815d1" alt="GET endpoint için alanlar" width="1000" data-path="images/tutorials/db7.png" />

Oluşturulan Query tipindeki parametreye ait görselde aşağıda yer almaktadır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db8.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=f16a48a099401a7a3350f47055f135ad" alt="Query tipindeki parametre" width="1000" data-path="images/tutorials/db8.png" />

Parametrenin özellikleri:

* **Data Type**: integer
* **Repetition Type**: Single (tek bir alan içerdiği için)
* **Parameter Type**: Query
* **Test Value**: Test edilecek değer yazılarak örnek yanıt elde edilir

**Save** butonuna tıklanarak endpoint kaydedilir.

### PUT Endpoint: /updateDepartmentByDeptNo

İkinci oluşturulması gereken endpoint ise /updateDepartmentByDeptNo isimli endpoint'dir.

Bunun için ise aşağıdaki görselde de görüldüğü üzere kırmızı dikdörtgen içerisinde yer alan **Add** butonuna tıklanması gereklidir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db9.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=0b6bd16e0782f94315c6a91422daee4d" alt="Add butonuna tıklama (ikinci endpoint için)" width="1000" data-path="images/tutorials/db9.png" />

Tıkladıktan sonra yan tarafta endpoint'in oluşturabileceği alan ekrana gelmektedir.

Oluşturulacak endpoint **Body** tipinde bir parametre almaktadır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db9.1.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=47861e14c8958ef20463a93456507d6e" alt="Add butonuna tıklama (ikinci endpoint için)" width="1000" data-path="images/tutorials/db9.1.png" />

Yukarıda tek tek anlatılan kısımlara bu endpoint'de kullanılacak alanlar girilmiştir.

Oluşturulan Body tipindeki parametreye ait görselde aşağıda yer almaktadır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db10.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=bc73b9de3fdf33bfe1a20a1fb9f85697" alt="PUT endpoint için alanlar" width="1000" data-path="images/tutorials/db10.png" />

Bu endpoint'te iki farklı parametre değeri aldığı için parametreler ayrı ayrı olacak şekilde tanımlanmıştır.

Oluşturulan endpoint bir update işlemi gerçekleştirdiği için Parameter Type olarak Body ifadesi seçilmiştir.

Yazılan SQL sorgusu da test edildiğinde yukarıdaki görselde yer alan yanıtı elde edilir.

### DELETE Endpoint: /deleteSalariesByEmpNo

Son oluşturulması gereken endpoint ise /deleteSalariesByEmpNo isimli endpoint'dir.

Bu endpoint'i eklemek için aşağıdaki görselde kırmızı dikdörtgen içerisinde yer alan **Add** butonuna tıklanır ve sağ tarafta açılan ekran üzerinden endpoint oluşturulur.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db12.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=312973e3b60d756c6c3d91b802eb49e6" alt="Add butonuna tıklama (üçüncü endpoint için)" width="1000" data-path="images/tutorials/db12.png" />

Gerekli alanlar doldurduktan sonra endpoint içerisinde yer alacak olan Query parametresi oluşturulur.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db13.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=a9effc5cdb6aa1b849e53d0bd1361c4f" alt="DELETE endpoint için Query parametresi" width="1000" data-path="images/tutorials/db13.png" />

Oluşturulan Query parametresi ile yazılmış olan SQL sorgusu test edilir ve aşağıdaki görselde yer alan örnek yanıt elde edilir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db14.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=7998ae7918387128f5b1a42dd5064a8b" alt="DELETE endpoint test sonucu" width="1000" data-path="images/tutorials/db14.png" />

Bu endpoint kaydedilir ve oluşturulacak olan DB-2-API'nin son hali de aşağıdaki görselde yer alır.

API'de bulunan endpoint'ler solda yer alan dikdörtgen içerisinde yer almaktadır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db15.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=5417498bef8133dac2d47756218aa6c7" alt="DB-2-API'nin son hali" width="1000" data-path="images/tutorials/db15.png" />

Tüm endpoint'ler oluşturulduktan sonra sağ üst köşede yer alan **Create API Proxy** butonuna tıklanır.

## DB-2-API'den API Proxy Oluşturulması

Bu sayfada:

* **Name** alanına DB-2-API'den oluşturulacak **API Proxy'ye** isim verilir.
* **Relative Path** ifadesine **/db2api** path ifadesi yazılır. Bu adres API Proxy'nin dışarıya açılacağı adres olacaktır.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db16.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=2f24eeca812d349bf542bf08e567657e" alt="API Proxy oluşturma sayfası" width="1000" data-path="images/tutorials/db16.png" />

Sağ üst köşede yer alan **Save** butonuna tıklanır ve proxy kaydedilir.

Kaydetme işlemi gerçekleştikten sonra ise aşağıdaki görselde yer alan sayfaya gelinir.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db17.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=fae2378d51622715f856008886351fe6" alt="Kaydetme işleminden sonra gelen sayfa" width="1000" data-path="images/tutorials/db17.png" />

## API Proxy'nin Test Edilmesi

Burada yukarıda bulunan ve görselde kırmızı dikdörtgen içerisine alınmış **Deploy** butonuna basarak **API Proxy deploy edilir**.

<img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db18.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=19192fbb49afb67b6a8cc6121b5d72ff" alt="Deploy butonu" width="1000" data-path="images/tutorials/db18.png" />

Proxy deploy edildikten sonra sırasıyla oluşturulan endpoint'ler test edilir.

Test işlemleri için **Develop** sekmesi seçilir.

<Steps>
  <Step title="GET endpoint testi">
    **/getSalariesByEmpNo** isimli endpoint seçilir ve **Test Endpoint** butonuna tıklanır.

    <img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db19.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=a1deaf4e86dff7a144082127b2365a7c" alt="Develop sekmesi" width="1000" data-path="images/tutorials/db19.png" />

    **Query** parametresi olarak **"10005"** değeri girilir ve kırmızı dikdörtgen içerisinde yer almakta olan yanıt elde edilir.

    <img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db20.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=7a57f45063665c7994d46e3837ed118a" alt="Develop sekmesi" width="1000" data-path="images/tutorials/db20.png" />
  </Step>

  <Step title="PUT endpoint testi">
    Bu endpoint'i test ettikten sonra ikinci endpoint olan **/updateDepartmentByDeptNo** isimli endpoint test için seçilir.

    **Test Endpoint** butonuna tıklanır.

    <img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db22.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=fbf7b42e7ca9d612bfe5f8f4ca47099d" alt="PUT endpoint testi" width="1000" data-path="images/tutorials/db22.png" />

    Bu endpoint **Body** içerisinde iki adet veri istediği için bunlar **key/value** biçiminde verilir.

    **Send** butonuna tıkladığında yanıt olarak kırmızı dikdörtgen içerisinde yer alan yanıt elde edilir.

    <img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db23.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=0bcd4deb4ff38e2aa8bd9f418312344a" alt="PUT endpoint test sonucu" width="1000" data-path="images/tutorials/db23.png" />
  </Step>

  <Step title="DELETE endpoint testi">
    Son olarak **/deleteSalariesByEmpNo** isimli endpoint test için seçilir.

    **Test Endpoint** butonuna tıklanır.

    <img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db24.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=558167919460d0c7eb131d2fd51a6bfb" alt="DELETE endpoint testi" width="1000" data-path="images/tutorials/db24.png" />

    Bu endpoint **Query** tipinde parametre almaktadır, değer olarak **"10005"** değerini girip **Send** butonuna tıkladığında elde edilen yanıt ise kırmızı dikdörtgen içerisinde yer almaktadır.

    <img src="https://mintcdn.com/apinizer/HRgKWWQ8jUg_tEHu/images/tutorials/db25.png?fit=max&auto=format&n=HRgKWWQ8jUg_tEHu&q=85&s=a4726e99ff55f4ff9f5d1c5ba8a9ca61" alt="DELETE endpoint test sonucu" width="1000" data-path="images/tutorials/db25.png" />
  </Step>
</Steps>
