如何在xcode中从头开始创建一个新的完美项目(Swift服务器)?

时间:2016-01-30 17:01:03

标签: xcode swift perfect

Perfect是一个用于在swift中创建web / http服务器的新Swift框架。文档还没有,我从头开始构建一个新项目时遇到了麻烦。我不知道导入哪些框架以及哪个框架是应用程序的入口点。 main.swift等......

我想创建一个新的xcworkspace,它将拥有我的项目“hello world server”。

我正在努力解决的问题:

  • 必须包含哪些框架?
  • 我应该如何创建一个完美的服务器,该应用程序的切入点是什么?
  • 如何创建一个以“Hello World消息”响应的“hello”根?
  • 我应该如何为服务器制作目标并最终运行服务器?

5 个答案:

答案 0 :(得分:5)

我设法写了一个" Hello World"关于这个的指导。 http://code-me-dirty.blogspot.co.uk/2016/02/creating-perfect-swift-server.html

简而言之,你需要这样做:

  1. 克隆原始项目
  2. 创建新工作区
  3. 创建新项目
  4. 导入PerfectLib.xcodeproject&导入PerfectServer.xcodeproject但不要复制
  5. 设置项目方案以启动PerfectServer HTTP App
  6. 将PerfectLib链接到"链接的框架和库#34;节
  7. 设置框架目标的构建设置*
  8. 创建PerfectHandlers.swift并粘贴(更好的写入以获得感觉)以下代码

    load('classGrades.mat');
    disp(namesAndGrades(1:5,1:8));
    grades = namesAndGrades(1:15,2:size(namesAndGrades,2));
    mean(grades);
    meanGrades = nanmean(grades);
    meanMatrix = ones(15,1)*meanGrades;
    curvedGrades = 3.5*(grades./meanMatrix);
    
    % Verifying 
    nanmean(curvedGrades)
    mean(curvedGrades)
    
    curvedGrades(curvedGrades>=5) = 5;
    
    totalGrades = nanmean(curvedGrades,2);
    
    letters = 'FDCBA';
    
  9. 然后你准备好了。在我的博客上,我有一个更长,更详细的版本,如有必要,我会在这里更新。

    构建设置

    • 部署位置:是
    • 安装构建产品位置:$(CONFIGURATION_BUILD_DIR)
    • 安装目录:/ PerfectLibraries
    • 跳过安装:否

答案 1 :(得分:4)

我刚刚写了一篇我想要分享的教程作为另一个解决方案,概述了如何使用Perfect创建一个Web服务以及一个与之交互的应用程序。

http://chrismanahan.com/creating-a-web-service-swift-perfect

<强>摘要

  1. 您必须将项目放在工作区中。此工作空间还应包括PerfectServer和PerfectLib项目。
  2. workspace screenshot

    1. 在您的项目中,创建一个新的OSX Framework目标。这将是您的服务器目标
    2. creating a new target

      1. 将PerfectLib与您的服务器目标和应用的目标相关联(如果您在服务器旁边构建应用)

      2. 编辑服务器的运行方案以使用PerfectServer HTTP App启动。

      3. edit scheme scheme with executable

        1. 在服务器目标的构建设置中,设置以下标志:

          • 跳过安装=否
          • 部署位置=是
          • 安装目录= / PerfectLibraries
          • 安装构建产品位置= $(CONFIGURATION_BUILD_DIR)
        2. 在服务器的文件夹中创建一个新文件。此文件将处理进入的请求。包括[大部分]以下内容:

          import PerfectLib
          
          // This function is required. The Perfect framework expects to find this function
          // to do initialization
          public func PerfectServerModuleInit() {
          
              // Install the built-in routing handler. 
              // This is required by Perfect to initialize everything
              Routing.Handler.registerGlobally()
          
              // These two routes are specific to the tutorial in the link above. 
              // This is where you would register your own endpoints. 
              // Take a look at the docs for the Routes API to better understand
              // everything you can do here
          
              // register a route for gettings posts
              Routing.Routes["GET", "/posts"] = { _ in
                  return GetPostHandler()
              }
          
              // register a route for creating a new post
              Routing.Routes["POST", "/posts"] = { _ in
                  return PostHandler()
              }
          }
          
          class GetPostHandler: RequestHandler {
              func handleRequest(request: WebRequest, response: WebResponse) {
                  response.appendBodyString("get posts")
                  response.requestCompletedCallback()
              }
          }
          
          class PostHandler: RequestHandler {
              func handleRequest(request: WebRequest, response: WebResponse) {
                  response.appendBodyString("creating post")
                  response.requestCompletedCallback()
              }
          }
          
        3. 当您构建服务的不同方面时,可以在命令行中使用cURL或其他REST测试工具(如Postman

          进行测试

          如果您想深入学习如何与SQLite数据库集成或创建与新服务器对话的应用程序,请查看本文顶部的教程。

答案 2 :(得分:3)

我建议远离模板,正如其他人建议的那样,并自己创建一个干净的项目。

创建此文件夹结构:

MyAPI
├── Package.swift
└── Sources
    └── main.swift

然后,在 Package.swift 文件中

import PackageDescription

let package = Package(
    name: "MyAPI",
    targets: [],
    dependencies: [
        .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2)
    ]
)

main.swift文件:

import PerfectHTTP
import PerfectHTTPServer

do {

    let route = Route(method: .get, uri: "/hello", handler: { (request: HTTPRequest, response: HTTPResponse) in
        response.appendBody(string: "world!")
        response.completed()
    })

    try HTTPServer.launch(.server(name: "localhost", port: 8080, routes: [route]))

} catch {
    fatalError("\(error)")
}

转到命令行并运行:

swift package generate-xcodeproj

打开生成的项目文件:

MyAPI.xcodeproj

更改活动方案,然后构建并运行:

enter image description here

在safari中打开:

http://localhost:8080/hello

答案 3 :(得分:0)

我不确定您是否找到了解决方案,但这就是我所做的:

点击跟踪器&#39; app是一个使用Perfect库编写的应用程序,所以即使文档还没有准备就绪,你仍然可以解析应用程序。我重命名了应用程序,以及类/方法。有一个index.html,我将其转移到了一个&#39; www&#39; root,然后使用TTHandler重新路由视图以尝试制作标准布局。它不是很好用,因为框架很年轻,但可以做到。我会更具体但我暂时回到轨道,因为我想等到它更成熟一点。

很有趣,我可能会在完美的onc功能创新的基础上编写自己的库,并且可以使用它来制作稳定的东西。

答案 4 :(得分:0)

只需将其中一个示例项目中的所有文件复制到您的git存储库: https://github.com/PerfectExamples

将所有文件(您已复制)中的example_project_name重命名为项目名称。

在终端运行中

swift package generate-xcodeproj

您将获得一个具有所需名称的完美项目。

相关问题