APIによるアクセス
- 携帯からサーバにアクセスする場合当然ながらAPIを使ってアクセスする
- 間違っても SQLをダイレクトに発行したりはしない
こうした場合サーバー側で API keyなどを使い制限した上で、
return Ok(HttpResponse::Ok() .content_type("application/json") .json(&vec));
などとしてJSONを返したりする
iPhone の場合、これを JSONdecoderで解析して、SwiftUIに落とし込むのはそれほど難しくない
struct Result: Codable,Hashable { var text: String } @State private var results = [Result]() List(results, id: \.self) { item in HStack { Text(item.text) .font(.headline) .frame(width: 80, height: 40) } } ... guard var urlComponents = URLComponents(string: "https://api.ogehage.com/?apipass=PASSWORD") var request = URLRequest(url: urlComponents.url!) URLSession.shared.dataTask(with: request) { data, response, error in if let data = data { let decoder = JSONDecoder() guard let decodedResponse = try? decoder.decode([Result].self, from: data) else { // decode error return } DispatchQueue.main.async { results = decodedResponse } } } }