Building REST APIs with Swift: A Step-by-Step Guide

Building REST APIs with Swift: A Step-by-Step Guide

REST API’lerin geliştirilmesi, mobil uygulamalarınızın ve web sitelerinizin arka tarafını kontrol etmek için kullanabileceğiniz temel bir yöntemdir. iOS geliştiricileri için, Swift programlama dili, mükemmel bir arka uç geliştirme deneyimi sunmak için güçlü bir seçenektir.

Bu blog yazısı, Swift kullanılarak REST API’lerinin nasıl oluşturulacağını adım adım anlatacaktır. İlk olarak, Swift ile bir REST servisi oluşturmaya başlamadan önce temel kavramların ne olduğunu anlamak önemlidir.

Anahtar Kavramlar

REST, bir veri alışverişi standartıdır. Kullanıcıların ve cihazların diğer cihazlarla veya sunucularla etkileşimde bulunmasını sağlamak için kullanılan HTTP protokolünün bir uzantısıdır. REST’in temel amacı, bir sistemin isteklerini yönetmek ve cevap vermektir.

Bir REST API’si, bir uygulamaya erişim sağlamak için kullanılan bir arayüzdür. Bu arayüz, bir uygulamanın kaynaklarına başvurmak veya bunlardan değerler almak için kullanılan istekleri kabul eder. Bir REST API’si, istekleri karşılamak için çeşitli HTTP metotlarını destekler.

HTTP Metotları

HTTP metotları, bir REST servisine istek göndermek için kullanılan temel yöntemlerdir. Bunlar, GET, POST, PUT, PATCH ve DELETE’dir.

GET, veri almak için kullanılır. Sunucuda mevcut olan bir kaynağa erişmek için kullanılır.

POST, kaynak oluşturmak için kullanılır. Sunucuya yeni bir kaynak eklemek için kullanılır.

PUT, var olan bir kaynaktan değerler almak için kullanılır.

PATCH, var olan bir kaynağı değiştirmek için kullanılır.

DELETE, bir kaynağı silmek için kullanılır.

Swift ile REST API Oluşturma

Swift ile bir REST API oluşturmak için, öncelikle bir webserver ve bir web framework kullanmanız gerekir. Swift ile kullanabileceğiniz pek çok web frameworku vardır. En popüler olanlar arasında Vapor, Kitura ve Perfect sayılabilir. Bu öğreticide, Vapor kullanarak bir REST API oluşturacağız.

Vapor, kurulumu ve kullanımı kolay bir web frameworkudur. Öncelikle, Vapor’u macOS üzerinde kurmalısınız. Kurulum için aşağıdaki komutu kullanabilirsiniz:

brew install vapor/tap/vapor

Kurulum tamamlandıktan sonra, bir API projesi oluşturabilirsiniz. Bunun için aşağıdaki komutu kullanabilirsiniz:

vapor new MyAPI

Proje oluşturulduktan sonra, dosyalarınızı editörünüzde açabilirsiniz. Projenizin ana dosyası, App.swift dosyasıdır. Bu dosyanın içeriğine bakacak olursak, aşağıdaki gibi bir kod görebiliriz:

import Vapor

struct MyAPI: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

struct ContentView: View {
    var body: some View {
        Text("Hello, world!")
            .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}

MyAPI.main()

Kodun anlamını anlamak için, öncelikle Vapor’un temel kavramlarını anlamak önemlidir. Vapor, bir Scene ve View mantığı kullanır. Scene, bir uygulamanın oluşturulmasını sağlayan bir yapıdır. View, bir Scene’nin içeriğini oluşturmak için kullanılan bir yapıdır.

Bu örnekte, bir WindowGroup Scene’i oluşturulmuş ve ContentView View’u içerisine eklenmiştir. ContentView, Text View’u içerisinde “Hello, world!” metnini göstermektedir.

Router Oluşturma

Bir REST API oluşturmak için, ilk olarak bir Router oluşturmamız gerekir. Router, API’ye istek göndermek için kullanılan URL’lerin tanımlanmasını sağlar.

Router oluşturmak için, App.swift dosyasının içerisine aşağıdaki kodu ekleyebilirsiniz:

let router = EngineRouter.default()

router.get("hello") { req -> String in
    return "Hello, world!"
}

Yukarıdaki kod, bir GET isteği için bir URL tanımlar. Bu URL’ye bir istek gönderildiğinde, “Hello, world!” metni geri dönecektir.

Model Oluşturma

Bir REST API oluştururken, verileri depolamak için bir model oluşturmamız gerekir. Bu model, verilerin tutulacağı bir veritabanı tablosu olarak düşünülebilir.

Bu örnekte, bir kullanıcı modeli oluşturacağız. Kullanıcı modeli, bir isim, email ve şifre alanı içerir. Modeli oluşturmak için, aşağıdaki kodu App.swift dosyasının içerisine ekleyebilirsiniz:

final class User: Model {
    static let schema = "users"
    
    @ID(key: .id)
    var id: UUID?
    
    @Field(key: "name")
    var name: String
    
    @Field(key: "email")
    var email: String
    
    @Field(key: "password")
    var password: String
    
    init() { }
    
    init(name: String, email: String, password: String) {
        self.name = name
        self.email = email
        self.password = password
    }
}

Veritabanı Ayarlama

Bir REST API oluştururken, verileri depolamak için bir veritabanı kullanmamız gerekir. Vapor, PostgreSQL, MySQL, MongoDB ve diğer popüler veritabanlarını destekler.

Bu örnekte, PostgreSQL veritabanını kullanacağız. Veritabanını ayarlamak için, config/fluent.json dosyasının içerisine aşağıdaki satırları ekleyebilirsiniz:

"postgresql": {
    "hostname": "localhost",
    "username": "username",
    "password": "password",
    "database": "database"
}

API Endpoint Oluşturma

Bir REST API oluştururken, API’ye istek gönderen kullanıcıların API’den cevap almasını sağlamak için endpoint oluşturmamız gerekir. Endpoint, bir URL ile belirli bir isteği karşılamak için kullanılan bir yapıdır.

Bu örnekte, bir kullanıcıyı kaydetmek için bir endpoint oluşturacağız. Kullanıcı bilgileri (isim, email ve şifre) isteğe gönderilecek ve veritabanına kaydedilecektir. Endpoint’i oluşturmak için, aşağıdaki kodu App.swift dosyasının içerisine ekleyebilirsiniz:

router.post("register") { req -> EventLoopFuture<User> in
    let user = try req.content.decode(User.self)
    return user.save(on: req.db).map { user }
}

Yukarıdaki kod, bir POST isteği için bir URL tanımlar. Bu URL’ye bir istek gönderildiğinde, istek içeriğindeki bilgiler veritabanına kaydedilecek ve kaydedilen kullanıcı bilgileri geri dönecektir.

<

Scroll to Top