Error registering user with Rest API

There is a register screen I created to register the user to the app, but I cannot register the user. In xcode console it says "statusCode should be 2xx, but is 500" Where am I doing wrong? Could you help?

PostModel JSON

struct PostModel: Codable {
    let ad: String
    let soyad: String
    let email: String
    let phone: String
    let dogumyili: String
    let ulke: String
    let sehir: String
    let ilce: String
    let adres: String
    let sifre: String
    let resifre: String

}

NetworkManager


class NetworkManager {
    static let shared = NetworkManager()
    func postData(post: PostModel, completion: @escaping (Result<Data, Error>) -> (Void)) {

        let parametrs: [String: Any] = [

            "ad": post.ad,
            "soyad": post.soyad,
            "email": post.email,
            "phone": post.phone,
            "dogumyili": post.dogumyili,
            "ulke": post.ulke,
            "sehir": post.sehir,
            "ilce": post.ilce,
            "adres": post.adres,
            "sifre": post.sifre,
            "resifre": post.resifre
        ]
        guard let url = URL(string: "www.sampleapi.com/sampleapi") else {
            return

        }
        var request = URLRequest(url: url)
        request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
        request.httpMethod = "POST"
        request.httpBody = parametrs.percentEncoded()
        let task = URLSession.shared.dataTask(with: request) { data, response, error in

            guard

                let data = data,

                let response = response as? HTTPURLResponse,

                error == nil

            else {

                print("error", error ?? URLError(.badServerResponse))

                return

            }

            guard (200 ... 299) ~= response.statusCode else {

                print("statusCode should be 2xx, but is \(response.statusCode)")

                print("response = \(response)")

                return

            }
            do {

                let response = try JSONSerialization.data(withJSONObject: data, options: .fragmentsAllowed)

                completion(.success(response))

            } catch {

                completion(.failure(error))

            }

        }
        task.resume()

    }

}

extension Dictionary {

    func percentEncoded() -> Data? {

        map { key, value in

            let escapedKey = "\(key)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""

            let escapedValue = "\(value)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""

            return escapedKey + "=" + escapedValue

        }

        .joined(separator: "&")

        .data(using: .utf8)

    }

}

RegisterButton

Button {
NetworkManager.shared.postData(post: PostModel(ad: loginData.ad, soyad: loginData.soyad, email: loginData.email, phone: loginData.phone, dogumyili: loginData.dogumyili, ulke: loginData.ulke, sehir: loginData.sehir, ilce: loginData.ilce, adres: loginData.adres, sifre: loginData.sifre, resifre: loginData.resifre)) { result in
                                switch result {
                                case .success(let result):
                                    print(result)
                                case .failure(let error):
                                    print(error)

                                }

                            }

Answered by Scorean in 719013022

I addedrequest.httpBody = try! JSONSerialization.data(withJSONObject: parametrs) instead of request.httpBody = parameters.percent Encoded()

Accepted Answer

I addedrequest.httpBody = try! JSONSerialization.data(withJSONObject: parametrs) instead of request.httpBody = parameters.percent Encoded()

Error registering user with Rest API
 
 
Q