# PerfectTemplate **Repository Path**: xianhengcode/PerfectTemplate ## Basic Information - **Project Name**: PerfectTemplate - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-10 - **Last Updated**: 2024-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PerfectTemplate [English](https://github.com/PerfectlySoft/PerfectTemplate)

Get Involed with Perfect!

Star Perfect On Github Stack Overflow Follow Perfect on Twitter Join the Perfect Slack

Swift 4.0 Platforms OS X | Linux License Apache PerfectlySoft Twitter Slack Status

Perfect Web服务器项目模板 本代码用于软件工程师在此基础之上开发Web服务器及其应用。您可以直接克隆本项目进行后续开发。该项目通过SPM软件包管理器编译,并能够生成一个可以独立运行的HTTP服务器。 ###Swift兼容性 本项目目前使用Swift 4.0工具链(Ubuntu)或Xcode 9编译。 ## 编译运行 下列命令行可以克隆并在8080和8181端口编译并启动 HTTP 服务器: ``` git clone https://github.com/PerfectlySoft/PerfectTemplate.git cd PerfectTemplate swift build .build/debug/PerfectTemplate ``` 如果没有问题,输出应该看起来像是这样: ``` [INFO] Starting HTTP server localhost on 0.0.0.0:8181 [INFO] Starting HTTP server localhost on 0.0.0.0:8080 ``` 这表明服务器已经准备好并且等待连接了。请访问[http://localhost:8181/](http://127.0.0.1:8181/) 来查看欢迎信息。在终端命令行上输入control-c组合键即可停止Web服务。 ## 快速上手 模板项目包含了一个简单的“你好,世界!”页面,能够压缩传输内容并同时启动多个服务器。 ``` swift import PerfectLib import PerfectHTTP import PerfectHTTPServer // 页面控制器 // 以下“页面句柄”可以直接引用和配置 func handler(data: [String:Any]) throws -> RequestHandler { return { request, response in // 响应一个简单的页面 response.setHeader(.contentType, value: "text/html") response.appendBody(string: "你好,世界!你好,世界!") // 在页面内容完成后必须主动调用 response.completed() 完成响应 response.completed() } } // 同时配置启动两个服务器 // 以下配置例子显示了如何同时启动一个以上的服务器 // 使用一个字典数据作为配置文件 let port1 = 8080, port2 = 8181 let confData = [ "servers": [ // 1号服务器配置 // * :/ 服务器下显示“你好,世界!” // * 提供 "./webroot" 下的文件访问,该文件夹必须设置在当前工作目录下 // * 执行页面和传输压缩 [ "name":"localhost", "port":port1, "routes":[ ["method":"get", "uri":"/", "handler":handler], ["method":"get", "uri":"/**", "handler":PerfectHTTPServer.HTTPHandler.staticFiles, "documentRoot":"./webroot", "allowResponseFilters":true] ], "filters":[ [ "type":"response", "priority":"high", "name":PerfectHTTPServer.HTTPFilter.contentCompression, ] ] ], // 2号服务器配置数据 // * 将数据重定向返回给1号服务器 [ "name":"localhost", "port":port2, "routes":[ ["method":"get", "uri":"/**", "handler":PerfectHTTPServer.HTTPHandler.redirect, "base":"http://localhost:\(port1)"] ] ] ] ] do { // 使用配置信息启动服务器 try HTTPServer.launch(configurationData: confData) } catch { fatalError("\(error)") // 启动异常 } ``` ## 问题报告 目前我们已经把所有错误报告合并转移到了JIRA上,因此github原有的错误汇报功能不能用于本项目。 您的任何宝贵建意见或建议,或者发现我们的程序有问题,欢迎您在这里告诉我们。[http://jira.perfect.org:8080/servicedesk/customer/portal/1](http://jira.perfect.org:8080/servicedesk/customer/portal/1)。 目前问题清单请参考以下链接: [http://jira.perfect.org:8080/projects/ISS/issues](http://jira.perfect.org:8080/projects/ISS/issues) ## 更多内容 关于Perfect更多内容,请参考[perfect.org](http://perfect.org)官网。