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
- Instalamos unas dependencias usando homebrew
brew install http-parser pcre2 curl hiredis
- 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 alPATH
modificando el archivo~/.bash_profile
export PATH=/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin:$PATH
Nuestro projecto
-
Creamos un directorio para nuestro proyecto e iniciamos este con el comando
swift build
mkdir swift-sample && cd swift-sample swift build --init
-
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 queswift build
es como un equivalente alnpm install
en nodejs orbundle 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): ... -
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
-
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()
-
Compilamos nuestro pequeño proyecto
make
-
Ejecutamos el archivo ejecutable que acabamos de crear
.build/debug/myFirstProject
- Ahora vayamos a nuestro explorador o con curl
curl http://localhost:8090/
Hello, World!
0 comments :
Post a Comment