Swift na serveru: Vapor

Swift je relativně nový programovací jazyk. Apple jej představil v červnu roku 2014 na konferenci WWDC (vývoj začal ještě o čtyři roky dříve). Vznikl jako alternativa k již poměrně zastaralému, nicméně stále velmi rozšířenému Objective-C a inspiraci si vzal z jiných jazyků, včetně C# a Ruby.  Od prosince 2015 je dokonce open-source a to umožnilo úzkou spolupráci s komunitou.

A právě i to podpořilo vznik různých frameworků, díky kterým je možné vytvořit si vlastní server ve Swiftu. Ty hlavní jsou tři – Kitura (patřící pod IBM), Perfect a Vapor. A právě o posledně jmenovaném se dozvíte více.

Instalace

K instalaci budeme potřebovat vývojové prostředí Xcode a Terminál. V Terminálu spustíme

curl -sL toolbox.vapor.sh | bash

Po instalaci založíme nový projekt příkazem

vapor new Pokus

který vytvoří všechny potřebné soubory. Kompilaci a spuštění provedeme následovně:

vapor build
vapor run

V prohlížeči pak stačí otevřít adresu http://localhost:8080/hello a je hotovo.

První kroky

Nejdůležitějším souborem je main.swift, kde mají své místo tzv. cesty (route) – například výše zmíněné hello. Základem je třída Droplet (let drop = Droplet()). Route pro GET request pak vypadá následovně:

drop.get("hello") { req in
    return "Hello world!"
}

Zkusíme něco zajímavějšího – třeba zobrazit pozdrav podle jména v adrese:

drop.get("hello", ":name") { req in
    guard let name = req.parameters["name"]?.string else {
        throw Abort.badRequest
    }
    return "Hello \(name)!”
}

Tady pro jistotu ještě zkontrolujeme, jestli je v adrese vůbec String a ne třeba číslo (zdravit číslo nemá úplně smysl). V prohlížeči otevřeme http://localhost:8080/hello/Batman a máme kompletní pozdrav.

Jednoduché JSON API

Nové aplikace vznikají většinou ve Swiftu, tak proč si ve stejném jazyce nenapsat i API? Vapor nám to samozřejmě umožní. Napojení na databázi, ať už jde o mySQL nebo PostgreSQL, není problém, ale v tomto článku na to není prostor. Můžeme si ale ukázat, jak vytvořit základní strukturu a jak vrátit JSON.

let api = drop.grouped("api")

api.group("v1") { v1 in
    v1.get("users") { req in
        let user1 = ["id": 1, "name": "Ondra", "email": "test@test.com"]
        let user1 = ["id": 2, "name": "Vojta", "email": "test@test.com"]
        let user1 = ["id": 3, "name": "Tomáš", "email": "test@test.com"]
        let users = [user1, user2, user3]

        return try JSON(node: users)
    }
}

První řádek vytvoří skupinu api, druhý pak verzi v1. Následuje cesta users – výsledná je pak /api/v1/users. Pak si vytvoříme nějaké uživatele, vložíme je do pole a metodou JSON je vrátíme. Jednoduché.

Vytvořit si vlastní API server může být pro některé iOS vývojáře zajímavou zkušeností a zpestřením. Vapor je jednou z několika možností a má před sebou slibnou budoucnost.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *