2016-10-28 7 views
1

ich versuche eine api zu erstellen, mit der meine ios app verbunden ist. Allerdings bekomme ich immer die Eingabeaufforderung error: not found, wenn ich die Post-Anfrage an und setze die Parameter auf id, name, birth and country. aber wenn ich gerade url/users/14253/test/10-20-1992/denmark im Briefträger laufen lasse, funktioniert es gut, also bin ich ein bisschen verwirrt, was ich falsch mache?verbindung zwischen nodejs api und swift app

api Route

router.post('/:id/:name/:birth/:country', function(req, res, next) { 

    var params = req.params; 

    var accessHeader = req.headers; 


    var user = new User({ 
    _id: params.id, 
    name: params.name, 
    birthday: new Date(params.birth), 
    country: params.country 
    }); 

    user.save(function(err) { 
    if (err) { 
     res.send(err); 
    } else { 
     res.json({ message: 'User created!' }); 
    } 
    }); 


}); 

swift alamofire Anfrage

func passUserData(id: String, name: String, birth: String, country: String, token: AccessToken) { 

    let headers = [ 
     "Content-Type": "application/x-www-form-urlencoded" 
    ] 

    Alamofire.request("http://url/users", method: .post, parameters: ["id" : id, "name" : name, "birth" : birth, "country" : country], encoding: JSONEncoding.default, headers: headers).responseString { closureResponse in 
     if String(describing: closureResponse.result) == "SUCCESS" 
     { 
      print(closureResponse) 
     } else { 
      print(closureResponse) 

     }} 
} 
+0

Können Sie 'params' in Ihrem node.js Code drucken? – DrakaSAN

+0

Sie übergeben keine Parameter in der URL, sondern im Körper. Die Anfrage, die Sie auf der Clientseite tun, hat die folgende URL: "/ users" mit den Parametern in einem Körper – krakig

+0

Sieht für mich wie der Swift-Code wird eine URL in Form von http: // IP: 3000/Benutzer? ID = bla & name = bla & etc, absolut nicht die URL, die du willst. Die Parameter müssen in die URL selbst eingebettet werden. – Gimby

Antwort

2

Entweder Sie die Parameter in der URL übergeben:

Alamofire.request("http://172.20.10.2:3000/users/" + id + "/" + name + "/" + birth + "/" + country, ...); 

Entweder Sie die Parameter in den Körper gelangen:

router.post('/users', function(req, res, next) { 

    var body = req.body; 

    var accessHeader = req.headers; 


    var user = new User({ 
    _id: body.id, 
    name: body.name, 
    birthday: new Date(body.birth), 
    country: body.country 
    }); 

    user.save(function(err) { 
    if (err) { 
     res.send(err); 
    } else { 
     res.json({ message: 'User created!' }); 
    } 
    }); 


}); 
Verwandte Themen