Problem with POST request from swift frontend Problem with POST request from swift frontend flask flask

Problem with POST request from swift frontend


I think your code is wrong.

guard let httpBody=try? JSONSerialization.data(withJSONObject: parameters, options: [])  else {     return}

You can refer to Alamofire - ParameterEncoding.swift


I think you need to encoding data before request to server. You can try this code:

guard let jsonData=try? JSONSerialization.data(withJSONObject: parameters, options: [])  else {return}let jsonString = String(data: jsonData, encoding: .utf8)!;


Example:

let parameters:[String: Any] = ["latitude":  35.0094040,                                "longitude": -85.3275640,                                "tag": "this is my fancy tag",                                "image":"icecream.jpg"]private func query(_ parameters: [String: Any]) -> String {    var components: [(String, String)] = []    for key in parameters.keys.sorted(by: <) {        let value = parameters[key]!        components.append((escape(key), escape("\(value)")))    }    return components.map { "\($0)=\($1)" }.joined(separator: "&")}public func escape(_ string: String) -> String {      let generalDelimitersToEncode = ":#[]@"      let subDelimitersToEncode = "!$&'()*+,;="      var allowedCharacterSet = CharacterSet.urlQueryAllowed      allowedCharacterSet.remove(charactersIn: "\(generalDelimitersToEncode)\(subDelimitersToEncode)")      var escaped = ""      if #available(iOS 8.3, *) {         escaped = string.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) ?? string      } else {         let batchSize = 50         var index = string.startIndex         while index != string.endIndex {               let startIndex = index               let endIndex = string.index(index, offsetBy: batchSize, limitedBy: string.endIndex) ?? string.endIndex               let range = startIndex..<endIndex               let substring = string[range]               escaped += substring.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) ?? String(substring)               index = endIndex         }      }          return escaped}request.httpBody = query(parameters).data(using: .utf8, allowLossyConversion: false)