Perfect是一个用于在swift中创建web / http服务器的新Swift框架。文档还没有,我从头开始构建一个新项目时遇到了麻烦。我不知道导入哪些框架以及哪个框架是应用程序的入口点。 main.swift等......
我想创建一个新的xcworkspace,它将拥有我的项目“hello world server”。
我正在努力解决的问题:
答案 0 :(得分:5)
我设法写了一个" Hello World"关于这个的指导。 http://code-me-dirty.blogspot.co.uk/2016/02/creating-perfect-swift-server.html
简而言之,你需要这样做:
创建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';
然后你准备好了。在我的博客上,我有一个更长,更详细的版本,如有必要,我会在这里更新。
答案 1 :(得分:4)
我刚刚写了一篇我想要分享的教程作为另一个解决方案,概述了如何使用Perfect创建一个Web服务以及一个与之交互的应用程序。
http://chrismanahan.com/creating-a-web-service-swift-perfect
<强>摘要强>
将PerfectLib与您的服务器目标和应用的目标相关联(如果您在服务器旁边构建应用)
编辑服务器的运行方案以使用PerfectServer HTTP App启动。
在服务器目标的构建设置中,设置以下标志:
在服务器的文件夹中创建一个新文件。此文件将处理进入的请求。包括[大部分]以下内容:
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()
}
}
当您构建服务的不同方面时,可以在命令行中使用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
更改活动方案,然后构建并运行:
在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
您将获得一个具有所需名称的完美项目。