27 Temmuz 2016 Çarşamba

Swagger-Codegen ile Kod Oluşturma

Selamlar, bu yazımda Swagger araçlarından biri olan Swagger-Codegen ile var olan bir apiyi generate etmekten bahsedeceğim.

Öncelikle Kod Oluşturma nedir bunu açıklayacak olursam;
Var olan kodlara kod yazma yeteneği kazandırma işlemidir diyebiliriz. Örneğin elimizde herhangi bir dilde yazılmış bir api var. Biz bunu başka bir dile çevirmek istiyoruz. Bu noktada Kod Oluşturma yapmamız gerekmektedir. Birçok dilde bu işleme özel araçlar bulunmaktadır.

Ben bu yazımda bahsettiğim örneği açıklayacağım. Bir dilde yazılmış örnek bir apiyi Swagger-Codegen aracını kullanarak başka bir dile generate edilişinden bahsedeceğim.

*Swagger-Codegen

 Apiyi generate ederken Java kullanacağım.

-> Öncelikle Swagger-Codegen .jar dosyasını buradan indirmemiz gerekiyor.

-> Daha sonra aşağıdaki komutları sırasıyla uygulayarak elimizde bulunan apiyi istediğimiz bir dile çevirebiliriz.

$ git clone https://github.com/swagger-api/swagger-codegen

$ cd swagger-codegen

$ mvn clean package

$ java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar
        generate \
    -i  http://petstore.swagger.io/v2/swagger.json \
    -l  php \
    -o /var/tmp/php_api_client

Adımlarını takip ederek apiyi php dilindeki haline generate etmiş oluruz.

Buradaki parametrelere bakacak olursak;
i: Apinin .json linki
l: Generate etmek istediğimiz dil
o: Generate etmek istediğimiz yerin uzantısı

Hangi dillere generate edebileceğimizi öğrenmek için;

$ ls -1 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/

Daha fazla bilgiyi Swagger-Codegen Github sayfasından edinebilirisiniz.
Umarım faydalı olmuştur iyi çalışmalar.

26 Temmuz 2016 Salı

Swagger ve Araçları

Herkese merhaba, bu yaz stajında Swagger ile ilgili çalışmalar yapıyorum. Bu süreçte öğrendiğim konulardan bahsetmek istedim.

*Öncelikle  Open API Initiative'den bahsedecek olursam;

Linux Foundation altında açık denetimli bir yapı olarak oluşturulan, gelişmekte ve yükselişte olan bir tanımlama formatıdır. Swagger Specification doğrudan Open Specification'ın temeline dayanarak OAI'ye eklenmiştir.

*OpenAPI Specification(The Swagger Specification);

OpenAPI Specification'ın hedefi; insanların ve bilgisayarların anlayabilmesi için REST API'lerin arayüzlerine dilden bağımsız bir standard tanımlamaktır. OpenAPI var olan bir apiyi tekrar yazmamamızı sağlar ama OpenAPI Specification'ın yapısında tanımlanmış servislerin yeteneklerini belirlemek gerkir.

*Swagger nedir ve hangi amaçla kullanılır?

Swagger; REST Apilerin web ortamında kullanıcılara daha basit ve kullanışlı bir şekilde sunulmasını sağlar. Birçok dile frameworkü bulunmaktadır.
Bir diğer avantajı, herhangi bir dilde yazılmış bir REST Api'yi başka bir dile dönüştürmeye uygundur( Code Generation ).

Bu proje içinde kendi araçlarını barındırır. Bunları inceleyecek olursak;

*Swagger Core: Swagger'ın bir Java uygulamasıdır diyebiliriz. Github'ta uygulamalı olarak Java ile bir Swagger uygulaması bulunmaktadır.

*Swagger Codegen: Bir dilde yazılmış REST Api'leri istediğimiz dile dönüştürme işlemine yardımcı olur. Bunun java dili yardımıyla yapılışı Github'ta bulunmaktadır.

*Swagger UI: Swagger uyumlu hale getirilmiş Api'yi kullanıcıya sunan bir araçtır. Bu aracın da uyarlanışı Github'ta bulunmaktadır.

*Swagger Editor: Swagger tanımlamalarını YAML veya JSON formatta oluşturur. Sitesinde bulunan api'yi Generate Client bölümünden istediğimiz dile çevirebiliriz. Swagger Codegen'in yaptığı işlem buna karşılık geliyor. Bu uygulama konuyu anlamak için faydalı oldu benim için.
Uygulama linki  

*Swagger IRC

Peki her şeyi tasarladık adımları uyguladık kullanıcıların karşısına nasıl bir görüntü çıkacak;



















Şekilde görüldüğü gibi uygulamadaki bir bölümle iligli işlemler kullanıcıya listelenmektedir. Kullanıcı istediği işlemi gerekli parametreleri girerek gerçekleştirebilir.

Bu yazımda Swagger'ın ne olduğundan, araçlarından, hangi kolaylıkları sağladığından bahsettim. Bir sonraki yazılarımda araçların nasıl kullanıldığından ve bir apinin Swagger uyumlu hale nasıl getirildiği hakkında yazacağım.
Görüşmek üzere.