Быстрое простое приложение Kitura localhost не работает? - PullRequest
0 голосов
/ 16 февраля 2019

первый пост!

Я учусь в университете и быстро прохожу ускоренный курс.В прошлый раз мой профессор начал учить нас, как делать простые запросы на получение и отправку сообщений, но я все еще догоняю и совершенно четко не осознал некоторые основы.

Я впервые работаю с Kitura итолько второй раз кодирую в Swift.По какой-то причине, когда я использую swift run, я получаю свой отпечаток и неожиданно «Программа завершилась с кодом выхода: 0», а не на локальном хосте, запущенном на моем порту 8080, чтобы проверить мой ответ get на localhost:8080/.

Может ли кто-нибудь помочь мне понять, чего я не вижу?Или не поняли про серверные и командные строки?

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()

Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2019

Код, который вы указали, верен, поэтому, возможно, структура вашего проекта не такова.

Чтобы правильно создать проект, выполните следующие действия:
1. Создайтеновый каталог, например jamie.
2. Из этого каталога запустите swift package init --type=executable, чтобы создать новый проект.Проект будет называться jamie после имени каталога.
3. Отредактируйте Sources/jamie/main.swift и добавьте свой код.
4. Отредактируйте Package.swift и добавьте к зависимостям пакета "Jamie" следующее:
.package(url: "https://github.com/IBM-Swift/Kitura.git", .upToNextMajor(from: "2.5.0")),.
5. Отредактируйте Package.swift и добавьте в качестве списка зависимостей для цели "jamie":
dependencies: ["Kitura"]),

Это должно работать правильно.Если это не так, это может быть связано с тем, что порт, который вы пытаетесь использовать, уже используется.Если вы добавите регистратор в свой проект, Kitura запишет сообщение об ошибке, если не сможет подключиться к порту.Для этого выполните следующие действия:

  1. Редактируйте Package.swift и добавьте следующее к зависимостям пакета "Jamie":
    .package(url: "https://github.com/IBM-Swift/HeliumLogger.git", .upToNextMinor(from: "1.7.1")),.
  2. Отредактируйте Package.swift и добавьте регистратор в список зависимостей для цели "jamie", чтобы она стала:
    dependencies: ["Kitura", HeliumLogger"]),
  3. Отредактируйте Sources/jamie/main.swift и добавьте в начало файла следующее:

    import LoggerAPI
    import HeliumLogger
    
    HeliumLogger.use(LoggerMessageType.info)
    

    Если порт уже используется, вы получите сообщение, подобное следующему:

[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

Если вы еще этого не сделали, то, вероятно, стоит присоединиться к слабой организации Kitura под именем http://slack.kitura.io

...