Как разместить массив объектов с моей библиотекой? - PullRequest
0 голосов
/ 04 мая 2020

Я хочу опубликовать список тел объектов с моей библиотекой

Как я могу это сделать?

Мой пост json тело выглядит так:

[
    {
        "UserId" : "14224",
        "CustomerId" : "16695",
        "ProductCode": "1",
        "Quantity":"2"
    },
    {
        "UserId" : "14224",
        "CustomerId" : "16695",
        "ProductCode": "2",
        "Quantity":"3"
    }
]

Любой совет или образец кода, пожалуйста? Спасибо

1 Ответ

1 голос
/ 04 мая 2020
  1. Вам нужна модель для объекта, который вы хотите опубликовать
struct User: Codable {

  private enum CodingKeys: String, CodingKey {
    case userID = "UserId"
    case customerID = "CustomerId"
    case productCode = "ProductCode"
    case quantity = "Quantity"
  }
  let userID: String
  let customerID: String
  let productCode: String
  let quantity: String
}
Вам необходимо создать сервис
enum MyService {
  case postUsers(users: [User])
}
Вам необходимо, чтобы ваша служба соответствовала протоколу TargetType
extension MyService: TargetType {

    var baseURL: URL { return URL(string: "https://test.com")! }

    var path: String {
        switch self {
        case .postUsers(let users):
            return "/users"
        }
    }

    var method: Moya.Method {
        switch self {
        case .postUsers:
            return .post
        }
    }

    var task: Task {
        switch self {
        case .postUsers(let posts):
            return .requestJSONEncodable(posts)
        }
    }

    var sampleData: Data {
        switch self {
        case .postUsers:
            return Data() // if you don't need mocking
        }
    }

    var headers: [String: String]? {
        // probably the same for all requests?
        return ["Content-type": "application/json; charset=UTF-8"]
    }
}

Наконец, вы можете выполнить сетевой запрос POST.
let usersToPost: [User] = // fill this array
let provider = MoyaProvider<MyService>()
provider.request(.postUsers(users: usersToPost) { result in
    // do something with the result (read on for more details)
}

Для получения дополнительной информации см. Документацию .

...