¡Primer comentario!
Soy un estudiante que aprende rápido y estoy en un curso acelerado bastante grande. Mi profesor comenzó a enseñarnos cómo hacer solicitudes de obtención y publicación simples la última vez, pero todavía me estoy poniendo al día y claramente no he comprendido algunos de los conceptos básicos.
Esta es la primera vez que trabajo con Kitura y solo la segunda vez que codifico en Swift. Por alguna razón, cuando uso swift run , obtengo mi impresión y de repente "El programa terminó con el código de salida: 0" en lugar de tener un servidor local ejecutándose en mi puerto 8080 para verificar mi respuesta en localhost:8080/ .
¿Alguien podría ayudarme a averiguar lo que no estoy viendo? ¿O no ha entendido acerca de las líneas de comando y Swift del lado del servidor?
print("Hello, world from Swift Main!") import Kitura //constant router let router = Router() //When the router gets a request (contains everything needed to interpret the request), the server will respond with (Hello World or whatever data) router.get("/") { request, response, next in response.send("Hello world from router.get") //response next() //either end the route or go on to the next one } //What port for the server to run on Kitura.addHTTPServer(onPort: 8080, with: router) //Need to add routes before run(), either in different file or on main Kitura.run()¡Gracias!
El código que ha proporcionado es correcto, por lo que puede ser que la estructura de su proyecto no lo sea.
Para crear correctamente el proyecto, puede seguir los siguientes pasos:
1. Cree un nuevo directorio, por ejemplo, jamie .
2. Desde ese directorio, ejecute swift package init --type=executable para crear un nuevo proyecto. El proyecto se llamará jamie después del nombre del directorio.
3. Edite Sources/jamie/main.swift y agregue su código.
4. Edite Package.swift y agregue lo siguiente a las dependencias del paquete "Jamie":
.package(url: "https://github.com/IBM-Swift/Kitura.git", .upToNextMajor(from: "2.5.0")), .
5. Edite Package.swift y agregue como la lista de dependencias para el objetivo "jamie":
dependencies: ["Kitura"]),
Entonces debería funcionar correctamente. Si no es así, puede deberse a que el puerto que intenta utilizar ya está en uso. Si agrega un registrador a su proyecto, Kitura registrará un mensaje de error si no puede vincularse al puerto. Para hacerlo, siga los pasos a continuación:
Package.swift y agregue lo siguiente a las dependencias del paquete "Jamie":.package(url: "https://github.com/IBM-Swift/HeliumLogger.git", .upToNextMinor(from: "1.7.1")), .Package.swift y agregue el registrador a la lista de dependencias para el destino "jamie" para que se convierta en:dependencies: ["Kitura", HeliumLogger"]) , Edite Sources/jamie/main.swift y agregue lo siguiente en la parte superior del archivo:
import LoggerAPI import HeliumLogger HeliumLogger.use(LoggerMessageType.info)Si el puerto ya está en uso, recibirá un mensaje similar al siguiente:
[2019-02-17T12:01:40.723Z] [ERROR] [Kitura.swift:139 start()] Error listening on port 8080: Error code: -9992(0x-2708), Address already in use. Use server.failed(callback:) to handle
Si aún no lo ha hecho, probablemente valga la pena unirse a la organización slack de Kitura como http://slack.kitura.io