私は、Perfect と Turnstile-Perfect を使用してStormpath の iOS クライアント側ノート チュートリアルのバックエンドを構築することにより、 Turnstile-Perfect (サーバー側で迅速かつ完全なための Stormpath 実装) を使用して、iOS サーバー側のユーザー認証をテストしようとしています。基本的なリクエストに対してサーバーを起動して実行することはできますが (投稿の下部を参照)、ユーザー認証はまったく機能しません。おそらく、実際に格納するデータベース構造を作成するデータベースをセットアップする手順が不足しているためです。認証データ。具体的には、Postman を使用して次の投稿でサーバーをテストする場合:
{ "givenName": "Testing", "surname": "Tester", "email": "test@example.com", "password": "TestTest1" }
次のエラーが表示されます。
The file /register was not found.
これを構築するにはどうすればよいですか?Stormpath の node.js 実装を実行するときは、次のように実行します。
npm install -g stormpath-spa-dev-server
迅速なパーフェクトターンスタイルに相当するものは何ですか?
このプロジェクトの「main.swift」ファイルに記述されている現在のサーバー コード:
import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
import TurnstilePerfect
import SQLite
// Create HTTP server.
let server = HTTPServer()
// The Turnstile instance
let turnstile = TurnstilePerfect()
server.setRequestFilters([turnstile.requestFilter])
server.setResponseFilters([turnstile.responseFilter])
// Register your own routes and handlers
func getHandler(request: HTTPRequest, response: HTTPResponse) {
response.appendBody(string: "get notes")
response.completed()
}
func postHandler(request: HTTPRequest, response: HTTPResponse) {
response.appendBody(string: "post notes")
response.completed()
}
var routes = Routes()
routes.add(method: .get, uri: "/notes", handler: {
request, response in getHandler(request: request, response: response)
}
)
routes.add(method: .post, uri: "/notes", handler: {
request, response in postHandler(request: request, response: response)
}
)
// Add the routes to the server.
server.addRoutes(routes)
// Set a listen port of 3000
server.serverPort = 3000
// Set a document root.
// This is optional. If you do not want to serve static content then do not set this.
// Setting the document root will automatically add a static file handler for the route /**
server.documentRoot = "./webroot"
// Gather command line options and further configure the server.
// Run the server with --help to see the list of supported arguments.
// Command line arguments will supplant any of the values set above.
configureServer(server)
do {
// Launch the HTTP server.
try server.start()
} catch PerfectError.networkError(let err, let msg) {
print("Network error thrown: \(err) \(msg)")
}