Принятие PU SH данных от Swift до Golang - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь передать простую модель из приложения Swift iOS на сервер с файлом Go. Это мой код Swift, в основном украденный из другого вопроса здесь:

import Foundation
import UIKit

var str = "Hello, playground"

func submitPost(post: PartOneModel) {
    print("senting data")
    var urlComponents = URLComponents()
    urlComponents.scheme = "https"
    urlComponents.host = "jsonplaceholder.typicode.com"
    urlComponents.path = "/posts"
    guard let url = urlComponents.url else { fatalError("Could not create URL from components") }

    // Specify this request as being a POST method
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    // Make sure that we include headers specifying that our request's HTTP body
    // will be JSON encoded
    var headers = request.allHTTPHeaderFields ?? [:]
    headers["Content-Type"] = "application/json"
    request.allHTTPHeaderFields = headers

    // Now let's encode out Post struct into JSON data...
    let encoder = JSONEncoder()
    do {
        let jsonData = try encoder.encode(post)
        // ... and set our request's HTTP body
        request.httpBody = jsonData
        print("jsonData: ", String(data: request.httpBody!, encoding: .utf8) ?? "no body data")
    } catch {
        print("error1")
    }

    // Create and run a URLSession data task with our JSON encoded POST request
    let config = URLSessionConfiguration.default
    let session = URLSession(configuration: config)
    let task = session.dataTask(with: request) { (responseData, response, responseError) in
        guard responseError == nil else {
            print("error2")
            return
        }

        // APIs usually respond with the data you just sent in your POST request
        if let data = responseData, let utf8Representation = String(data: data, encoding: .utf8) {
            print("response: ", utf8Representation)
        } else {
            print("no readable data received in response")
        }
    }
    task.resume()
}

Прямо сейчас, код просто передает модель go на сервер, который просто отправляет его обратно. Я хочу, чтобы он мог быть принят файлом Go, который, в свою очередь, анализирует его и выполняет некоторые другие действия с данными. Это PartOneModel, если это помогает:

import Foundation

struct PartOneModel: Encodable {
    let teacher: String
    let complaintType: String
    let teacherIsTrue: Bool
    let repsIsTrue: Bool
    let customIsTrue: Bool
    let customText: String
}

Файл JSON анализируется в ViewController из простого блока AWS, и из этого файла вызывается функция submitPost. Я искал, но не нашел объяснения, как принимать данные с Go. Любое направление или помощь будет высоко ценится! Оставаться здоровым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...