Swift en el servidor con Kitura

Este post es 90% una traducción de esta pagina en Japonés que lo explica muy bien.

Recientemente IBM esta llevando Swift al servidor y para esto ha publicado varias herramientas. Kitura es uno de estas, es un framework para aplicaciones, es open-source y esta basado en Express.js, el popular framework de nodejs.


Prerequisitos

  1. Instalamos unas dependencias usando homebrew
    brew install http-parser pcre2 curl hiredis
  2. Instalamos el último compilador swift de la página official de Swift.org: Swift - Latest Development Snapshots. No se preocupen, ya esta compilado y viene en un archivo listo para instalar .pkg.
    Luego de la instalación agregamos la siguiente locación al PATH modificando el archivo ~/.bash_profile
    export PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:$PATH
    

Nuestro projecto

  1. Creamos un directorio para nuestro proyecto e iniciamos este con el comando swift build
    mkdir swift-sample && cd swift-sample
    swift build --init
    
  2. Modificamos el archivo Package.swift:
    import PackageDescription
     
    let package = Package(
        name: "myFirstProject",
        dependencies: [
            .Package(url: "https://github.com/IBM-Swift/Kitura-router.git", majorVersion: 0),
        ]
    )
    
    Y con estos cambios instalamos de nuevo nuestras dependencias:
    swift build
    
    Algunos se habrán dado cuento que swift build es como un equivalente al npm install en nodejs or bundle install en ruby. Esta vez saldrán mas mensajes y al final terminará en error. Pero no preocuparse, es por que Kitura router depende un una librería en C y el package manager no soporta el linkage C/C++ todavia. Este error tambien esta descrito en el README de Kitura

    ld: library not found for -lcurlHelpers for architecture x86_64
    :0: error: link command failed with exit code 1 (use -v to see invocation)
    :0: error: build had 1 command failures
    error: exit(1): ...
    
  3. Copiamos el Makefile de Kitura-net. En mi caso es la version 0.3.2, usar la version que cada uno tenga :]
    cp Packages/Kitura-net-0.3.2/Makefile-client Makefile
    
  4. Ahora ya estamos listos para escribir nuestro codigo!. Modificamos el archivo Sources/main.swift
    import KituraRouter
    import KituraNet
    import KituraSys
     
    let router = Router()
    
    router.get("/") { request, response, next in
        response.status(HttpStatusCode.OK).send("Hello, World!")
        next()
    }
     
    let server = HttpServer.listen(8090, delegate: router)
    Server.run()
    
  5. Compilamos nuestro pequeño proyecto
    make
    
  6. Ejecutamos el archivo ejecutable que acabamos de crear
    .build/debug/myFirstProject
    
  7. Ahora vayamos a nuestro explorador o con curl
    curl http://localhost:8090/
    
    Hello, World!
    
Por ahora son varios pasos, esperemos con el paso del tiempo todo es sea mas fácil. Yo ya estoy contento con esto!

This work is licensed under BSD Zero Clause License | nacho4d ®