私が現在理解しているように、それを行う1つの方法はJSONを使用することです。しかし、Swift オブジェクトをサーバーに送信して、サーバーで同じクラスが利用可能であることを確認する方が、より適切で簡単に思えます。このようにして、すべてのステップで迅速に使用し続けることができます。
これは可能ですか、どうすればこれを行うことができますか?
現在のセットアップ:
- データを送信する Swift プレイグラウンド。
- データを受信する Kitura サーバー。
遊び場コード:
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
struct TestObject {
let foo = "just a string"
let number = 125
let array = ["bar", "foo"]
func printSomeInfo() {
print(foo + "\(number+25)")
}
}
func send() {
let request = NSMutableURLRequest(url: URL(string: "http://192.168.178.80:8090/test")!)
request.httpMethod = "POST"
let testObject = TestObject()
let bodyData = "\(testObject)"
request.httpBody = bodyData.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with: request as URLRequest,
completionHandler: {
(data, response, error) -> Void in
})
task.resume()
}
send()
Kitura main.swift コード:
import Kitura
import Foundation
let router = Router()
struct TestObject {
let foo = "just a string"
let number = 125
let array = ["bar", "foo"]
func printSomeInfo() {
print(foo + "\(number+25)")
}
}
router.post("/test") {request, response, next in
response.headers["Content-Type"] = "text/plain; charset=utf-8"
if let post = try request.readString() {
// would like to cast to TestObject but that doesn't work
// let postObject = post as TestObject
print(post)
}
}
Kitura.addHTTPServer(onPort: 8090, with: router)
Kitura.run()