Perfect-HTTPServer 服务器English
Perfect软件框架:HTTP 1.1 服务器
本代码资源库包括了一个 HTTP 1.1 服务器,并包含了一些 HTTP 2.0 的基础支持。
如果您在使用 Perfect 开发 Swift Web服务器应用,则请将下列依存关系增加到您的 Package.swift 程序中:
.Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2, minor: 0)
如果您刚刚开始使用 Perfect,请不妨先看一下官网主页 Perfect。
另外,PerfectTemplate是一个非常好的 HTTP 服务器模板项目,请查看这里:PerfectTemplate。
请使用下列命令快速开始项目:
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
cd PerfectTemplate
然后请检查 Package.swift 中的依存关系:
let package = Package(
name: "PerfectTemplate",
targets: [],
dependencies: [
.Package(url:"https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2, minor: 0)
]
)
Package.swift 文件中 package 对象的名字属性决定了最终项目的可执行目标。
创建 Xcode 项目:
swift package generate-xcodeproj
SPM 软件包管理器会下载所有依存关系并创建为一个 Xcode 工程文件。
创建完成之后,您可以用 Xcode 打开这个名为 PerfectTemplate.xcodeproj 的工程文件。
打开之后即可编译并运行服务器,端口为 8181.
注意:如果您修改了Package.swift文件,必须重新运行swift package generate-xcodeproj
命令,否则可能无法在Xcode中编译;而之前在Xcode中修改的项目配置都会被覆盖。
打开 main.swift 并进行如下修改:
注意 import
语句,用于引用函数库
import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
创建 HTTP 实例并增加路由:
// 创建 HTTP 服务器
let server = HTTPServer()
// 注册路由并登记路由处理句柄
var routes = Routes()
routes.add(method: .get, uri: "/", handler: {
request, response in
response.appendBody(string: "<html><head><meta http-equiv='content-type' content='text/html;charset=utf-8'><title>你好,世界!</title></head><body>你好,世界!</body></html>")
response.completed()
}
)
// 将路由信息写入服务器
server.addRoutes(routes)
检查服务器配置:
// 设置监听端口为8181
server.serverPort = 8181
// 设置文档根目录
// 这是可选的,如果您有静态文件要使用,请按照下列步骤编程:
// 静态文件设置完成后会将所有默认路由通配符 /** 都指向静态文件
server.documentRoot = "./webroot"
从命令行和配置文件中配置服务器 从服务器运行 --help 选项就可以看到受支持的配置清单。 您可以根据需要自行决定配置的内容。
配置文件 arguments.swift 和命令行的作用是一样的。在真正启动服务器之前,请调用下面的代码。
configureServer(server)
下列操作会阻塞服务器进程。请注意 server.start()
之后的任何程序都是无法执行的。
do {
// 启动 HTTP 服务器
try server.start()
} catch PerfectError.networkError(let err, let msg) {
print("网络异常: \(err) \(msg)")
}
在 Xcode 中,请在运行服务器之前选择可执行文件的运行方式(executable scheme),而且这个选择操作在每次您从命令行生成 Xcode 项目时都必须执行。选择运行方式之后,还需要选择工作目录,并将工作目录设置为项目根目录,否则服务器无法正确调用上面的文档根目录。请注意每次从命令行生成 Xcode 项目后,这些操作都需要重新执行一遍。
上述设置完成之后就可以编译并运行服务器了。用浏览器测试 http://0.0.0.0:8181
应该可以看到结果。服务器还支持您的静态文件用作页面。
=======
我们现在正在转移至 JIRA 工作流处理系统,因此 github 上的问题汇报功能就被关闭了。
如果您有任何意见或建议,请在我们的JIRA管理平台上报告 http://jira.perfect.org:8080/servicedesk/customer/portal/1。
目前本项目详细的问题清单请参考 http://jira.perfect.org:8080/projects/ISS/issues