Perfect模板English
Perfect空启动项目
本代码用于软件工程师在此基础之上开发Web服务器及其应用。您可以直接克隆本项目进行后续开发。该项目通过SPM软件包管理器编译,并能够生成一个可以独立运行的HTTP服务器。
###Swift的兼容性 本项目必须使用Swift 3.0工具链及Xcode 8.0+,或者通过Linux安装Swift.org。
因为Xcode 8发行后出现了一些问题,如果您直接在Xcode下使用,我们建议安装swiftenv,以及 Swift 3.0.1 工具集预览版。
# after installing swiftenv from https://swiftenv.fuller.li/en/latest/
swiftenv install https://swift.org/builds/swift-3.0.1-preview-1/xcode/swift-3.0.1-PREVIEW-1/swift-3.0.1-PREVIEW-1-osx.pkg
还有一种方式,就是在您Xcode中增加一个配置,即在项目设置“Project Settings”里面,查找条目“Library Search Paths”,然后将这个条目配置为“$(PROJECT_DIR)”,并且
为了创建项目并且试验运行,请在终端命令行中输入以下内容。完成后就可以实现一个在本地网络8181端口工作的Web服务器。
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
cd PerfectTemplate
swift build
.build/debug/PerfectTemplate
如果您看见编译有关于OpenSSL的错误,请参阅关于Swift版本,或Library Search Paths的建议.
如果一切顺利,您会看见如下的输出:
Starting HTTP server on 0.0.0.0:8181 with document root ./webroot
这表明服务器已经准备好并且等待连接了。请访问http://localhost:8181/ 来查看欢迎信息。在终端命令行上输入control-c组合键即可停止Web服务
以下的源代码展示了一个最简单的“你好,世界!”样例。
import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
// 创建HTTP服务器.
let server = HTTPServer()
// 注册自定义路由和页面句柄
var routes = Routes()
routes.add(method: .get, uri: "/", handler: {
request, response in
response.appendBody(string: "<html><title>Hello, world!</title><body>Hello, world!</body></html>")
response.completed()
}
)
// 将路由注册到服务器.
server.addRoutes(routes)
// 监听8181端口
server.serverPort = 8181
// 设置文档根目录。
// 这个操作是可选的,如果没有静态页面内容则可以忽略这一步。
// 设置文档根目录后,对于其他所有未经过滤器或已注册路由来说的其他路径“/**”,都会指向这个根目录下的文件。
server.documentRoot = "./webroot"
// 逐个检查命令行参数和服务器配置
// 如果用命令行执行带 --help 参数的服务器可执行程序,就可以看到所有可以选择的参数。
// 如果调用时在命令行参数,而且该参数在配置文件中也有说明,则命令行参数的值会取代配置文件。
configureServer(server)
do {
// 启动HTTP服务器
try server.start()
} catch PerfectError.networkError(let err, let msg) {
print("Network error thrown: \(err) \(msg)")
}
目前我们已经把所有错误报告合并转移到了JIRA上,因此github原有的错误汇报功能不能用于本项目。
您的任何宝贵建意见或建议,或者发现我们的程序有问题,欢迎您在这里http://jira.perfect.org:8080/servicedesk/customer/portal/1告诉我。
目前问题清单请参考以下链接:http://jira.perfect.org:8080/projects/ISS/issues
关于Perfect更多内容,请参考perfect.org官网。