{"id":20038031,"url":"https://github.com/perfectlysoft/perfectdocs","last_synced_at":"2025-04-05T14:05:45.040Z","repository":{"id":69670202,"uuid":"54487444","full_name":"PerfectlySoft/PerfectDocs","owner":"PerfectlySoft","description":"Reference and documentation for Perfect (Server-side Swift). Perfect (支持服务器端Swift语言的软件函数库）使用文档和参考手册.","archived":false,"fork":false,"pushed_at":"2020-01-21T22:47:20.000Z","size":2464,"stargazers_count":564,"open_issues_count":1,"forks_count":128,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-03-29T13:06:46.148Z","etag":null,"topics":["documentation","perfect","server-side-swift","swift"],"latest_commit_sha":null,"homepage":"https://www.perfect.org","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PerfectlySoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-22T15:40:33.000Z","updated_at":"2025-02-26T16:11:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"8d274395-6574-49c1-8ff3-ae41d27df192","html_url":"https://github.com/PerfectlySoft/PerfectDocs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerfectlySoft%2FPerfectDocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerfectlySoft%2FPerfectDocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerfectlySoft%2FPerfectDocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PerfectlySoft%2FPerfectDocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PerfectlySoft","download_url":"https://codeload.github.com/PerfectlySoft/PerfectDocs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345852,"owners_count":20924102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","perfect","server-side-swift","swift"],"created_at":"2024-11-13T10:24:51.943Z","updated_at":"2025-04-05T14:05:45.021Z","avatar_url":"https://github.com/PerfectlySoft.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Perfect Documentation Library [简体中文](README.zh_CN.md)\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"http://perfect.org/get-involved.html\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://perfect.org/assets/github/perfect_github_2_0_0.jpg\" alt=\"Get Involved with Perfect!\" width=\"854\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/PerfectlySoft/Perfect\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://www.perfect.org/github/Perfect_GH_button_1_Star.jpg\" alt=\"Star Perfect On Github\" /\u003e\n    \u003c/a\u003e  \n    \u003ca href=\"http://stackoverflow.com/questions/tagged/perfect\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://www.perfect.org/github/perfect_gh_button_2_SO.jpg\" alt=\"Stack Overflow\" /\u003e\n    \u003c/a\u003e  \n    \u003ca href=\"https://twitter.com/perfectlysoft\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://www.perfect.org/github/Perfect_GH_button_3_twit.jpg\" alt=\"Follow Perfect on Twitter\" /\u003e\n    \u003c/a\u003e  \n    \u003ca href=\"http://perfect.ly\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://www.perfect.org/github/Perfect_GH_button_4_slack.jpg\" alt=\"Join the Perfect Slack\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://developer.apple.com/swift/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Swift-4.1-orange.svg?style=flat\" alt=\"Swift 4.1\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://developer.apple.com/swift/\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Platforms-OS%20X%20%7C%20Linux%20-lightgray.svg?style=flat\" alt=\"Platforms OS X | Linux\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://perfect.org/licensing.html\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/License-Apache-lightgrey.svg?style=flat\" alt=\"License Apache\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://twitter.com/PerfectlySoft\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Twitter-@PerfectlySoft-blue.svg?style=flat\" alt=\"PerfectlySoft Twitter\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://perfect.ly\" target=\"_blank\"\u003e\n        \u003cimg src=\"http://perfect.ly/badge.svg\" alt=\"Slack Status\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nThis library contains all the reference documentation and API reference-related material you need to run and use Perfect.\n\n## Table of Contents\n\n* [Introduction](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/introduction.md)\n* [Getting Started](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/gettingStarted.md)\n* [Getting Started From Scratch](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/gettingStartedFromScratch.md)\n* [An HTTP and Web Services Primer](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/WebServicesPrimer.md)\n* [Repository Layout](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/repositoryLayout.md)\n* [Building with Swift Package Manager](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/buildingWithSPM.md)\n* [Configuring and Launching HTTPServer](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HTTPServer.md)\n* [Handling Requests](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/handlingRequests.md)\n\t* [Routing](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/routing.md)\n\t* [HTTPRequest](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HTTPRequest.md)\n\t\t* [Using Form Data](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/formData.md)\n\t\t* [File Uploads](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/fileUploads.md)\n\t* [HTTPResponse](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HTTPResponse.md)\n\t* [Request \u0026amp; Response Filters](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/filters.md)\n\t\t* [Web Redirect Filters](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/webRedirects.md)\n\t* [Sessions](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/sessions.md)\n\t\t* [CSRF Security](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/csrf.md)\n\t\t* [CORS Security](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/cors.md)\n\t* [Local Authentication modules](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/authentication.md)\n\t* [GSS-SPNEGO Security Feature](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/SPNEGO.md)\n\t* [JSON](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/JSON.md)\n\t* [Static File Content](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/staticFileContent.md)\n\t* [Mustache](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/mustache.md)\n\t* [Markdown](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Markdown.md)\n\t* [HTTP Request Logging](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HTTPRequestLogging.md)\n* [CRUD](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/crud.md)\n* [WebSockets](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/webSockets.md)\n* [Utilities](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/utilities.md)\n\t* [Bytes](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/bytes.md)\n\t* [File](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/file.md)\n\t* [Dir](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/dir.md)\n\t* [Environmental Variables](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/env.md)\n\t* [Threading](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/thread.md)\n\t* [Networking](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/net.md) @kjessup\n\t* [OAuth2 and Providers](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/OAuth2.md)\n\t* [UUID](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/UUID.md)\n\t* [SysProcess](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/sysProcess.md)\n\t* [Log](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/log.md)\n\t* [Log Files](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/logFiles.md)\n\t* [Remote Logging](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/logRemote.md)\n\t* [CURL](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/cURL.md)\n\t* [XML](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/xml.md)\n\t* [INI](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/ini.md)\n\t* [Zip](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/zip.md)\n\t* [Crypto](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/crypto.md)\n\t* [SMTP](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/SMTP.md)\n\t* [Google Analytics Measurement Protocol](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/GoogleAnalytics.md)\n\t* [Repeater](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/repeater.md)\n* [Database Connectors](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/databaseConnectors.md)\n\t* [SQLite](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/SQLite.md)\n\t* [MySQL](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MySQL.md)\n\t* [MariaDB](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MariaDB.md)\n\t* [PostgreSQL](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/PostgreSQL.md)\n\t* [MongoDB](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MongoDB.md)\n\t\t* [MongoDB Databases](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MongoDB-Database.md)\n\t\t* [MongoDB Collections](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MongoDB-Collections.md)\n\t\t* [MongoDB Client](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MongoDB-Client.md)\n\t\t* [Working with BSON](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MongoDB-BSON.md)\n\t\t* [GridFS](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/MongoDB-GridFS.md)\n\t* [CouchDB](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/CouchDB.md)\n\t* [LDAP](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/LDAP.md)\n\t* [Redis](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Redis.md) @kjessup\n\t* [FileMaker](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/filemaker.md)\n\n* [iOS Notifications](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/iOSNotifications.md) @kjessup\n* [Deployment](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/deployment.md)\n\t* [Ubuntu](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/deployment-Ubuntu.md)\n\t* Docker\n\t* [Heroku](https://github.com/PerfectlySoft/Perfect/wiki/Deploying-with-Heroku)\n\t* Azure\n\t* AWS\n\t* Linode\n\t* [Digital Ocean](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/deployment-DigitalOcean.md)\n\n* Performance Profiling \u0026 Remote Monitoring\n\t* [SysInfo](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/SYSINFO.md)\n\t* [New Relic](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/NEWRELIC.md)\n\n* Message Queue \u0026 Cluster Control\n\t* [Kafka](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Kafka.md)\n\t* [Mosquitto](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/mosquitto.md)\n\t* [ZooKeeper (Linux Only)](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/ZooKeeper.md)\n\n\n* Big Data / Artificial Intelligence \u0026 Machine Learning\n\t* [TensorFlow](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/tensorflow.md)\n\t* [Hadoop](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Hadoop.md)\n\t\t* [HDFS](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HadoopWebHDFS.md)\n\t\t* [MapReduce Master](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HadoopMapReduceMaster.md)\n\t\t* [MapReduce History](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HadoopMapReduceHistory.md)\n\t\t* [YARN Node Manager](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HadoopYARNNodeManager.md)\n\t\t* [YARN Resource Manager](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/HadoopYARNResourceManager.md) \t\n\n* Platform specific Notes\n\t* [Ubuntu 16.04: Starting Services at System Boot](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/starting-services.md)\n\n* Language Extensions:\n\t* [Python](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/python.md)\n\n\t \n## StORM, a Swift ORM\n\nStORM is not distributed as a Perfect.org project; however, the Perfect libraries are integral to its operation, and some authors are common.\n\t\n* [StORM, a Swift ORM](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM.md)\n\t* [Introduction to StORM](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM.md)\n\t* [Setting up a class](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-Setting-up-a-class.md)\n\t* [Saving, Retrieving and Deleting Rows](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-Saving-Retrieving-and-Deleting-Rows.md)\n\t* [StORMCursor](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-Cursor.md)\n\t* [Inserting rows](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-Insert.md)\n\t* [Updating rows](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-Update.md)\n\t* [StORM Lifecycle Events](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORMLifecycleEvents.md)\n\t* Database Specific Implementations\n\t\t* [PostgresStORM](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-PostgreSQL.md)\n\t\t* [SQLiteStORM](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-SQLite.md)\n\t\t* [MySQLStORM](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-MySQL.md)\n\t\t* [Apache CouchDB](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-CouchDB.md)\n\t\t* [MongoDBStoRM](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/StORM-MongoDB.md)\n\n## Perfect Turnstile – an authentication layer for Perfect\n\n[Turnstile](https://github.com/stormpath/Turnstile) is an Open Source project from [Stormpath](https://github.com/stormpath) focussing on standardizing authentication across platforms and frameworks. Thanks to work done by [Edward Jiang](https://github.com/edjiang) on Turnstile and a foundation linking Turnstile with Perfect, an authentication layer is available for Perfect.\n\n**⚠️NOTE⚠️** Turnstile is out of service as declared by its author, please check [Storm API Migration FAQ](https://stormpath.com/oktaplusstormpath?utm_source=github\u0026utm_medium=readme\u0026utm-campaign=okta-announcement) for more information.\n\n* [Perfect-Turnstile](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Turnstile.md)\n\t* [Perfect Turnstile with SQLite Integration](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Turnstile.md)\n\t* [Perfect Turnstile with PostgreSQL Integration](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Turnstile.md)\n\t* [Perfect Turnstile with MySQL Integration](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Turnstile.md)\n\t* [Perfect Turnstile with CouchDB Integration](https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide/Turnstile.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperfectlysoft%2Fperfectdocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperfectlysoft%2Fperfectdocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperfectlysoft%2Fperfectdocs/lists"}