swift - POST requests in Alamofire Parameter Encoding returning GET responses -


i'm trying make route builder in swift using alamofire (3.0) , have succeded requests, when try make post request, example, still same responses of method.

my api routes are:

/users //get -> return list of users /users //post -> create new user parameters sent 

when use postman works fine.

here router code:

import foundation import alamofire   enum userrouter: urlrequestconvertible{      static let baseurl = nsurl(string: "http://192.168.0.106/users")!      case users     case createuser([string: anyobject])     case readuser(int)     case updateuser(int, [string: anyobject])     case destroyuser(int)      var url: nsurl { return userrouter.baseurl.urlbyappendingpathcomponent(route.path) }      var route: (path: string, parameters: [string: anyobject]?) {          switch self{          case .users:             return ("/", nil)         case .readuser(let userid):             return ("/\(userid)", nil)         case .createuser(let userinfo):             return ("/", userinfo)         case .updateuser(let userid, let userinfo):             return ("/\(userid)", userinfo)         case .destroyuser(let userid):             return ("/\(userid)", nil)         }      }      var method: alamofire.method{          switch self{          case .users:             return .get         case .readuser:             return .get         case .createuser:             return .post         case .updateuser:             return .put         case .destroyuser:             return .delete          }      }      var urlrequest: nsmutableurlrequest {          let httprequest = nsmutableurlrequest(url: url)         httprequest.httpmethod = method.rawvalue          switch self{          case .createuser (let userinfo):             print("creating")             print(httprequest.httpmethod) //print: post on createuser, should.             return alamofire.parameterencoding.json.encode(httprequest, parameters: userinfo).0         default:             return alamofire.parameterencoding.url.encode(httprequest, parameters: (route.parameters ?? [ : ])).0          }      }  }  func testroute(){     alamofire.request(userrouter.createuser(["name":"test"])).responsejson{ (response) in          switch response.result{          case .success(let data):             print (data) //error here, printing response instead of api response creating users (post).         case .failure:             print("fail")         }      }  } 

turned out problem combination of command alamofire.request() generates (curl -i -x post...) , how apache handling trailing slashes of url. when tried post "http://192.168.0.106/users" being redirect (301) get "http://192.168.0.106/users".

so had include line of command in .htaccess:

# redirect trailing slashes... rewritecond %{request_uri} !(.*)/$ rewriterule ^(.*)/$ /$1 [l,r=301] 

and change router's code, appending trailing slash @ end:

var route: string {          switch self{          case .users:             return ""         case .readuser(let userid):             return "/\(userid)/"         case .createuser:             return "/"         case .updateuser(let userid):             return "/\(userid)/"         case .destroyuser(let userid):             return "/\(userid)/"         }      } 

Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -