2015-03-16 16 views
10

Ich habe einen GET-Endpunkt mit URI als/Benutzer/Benutzer-ID. Die 'user-id' ist hier die Pfadvariable.

Wie kann ich die Pfadvariable während der GET-Anfrage setzen? Diese

ist, was ich versucht: -

$http.get('/user/:id',{ 
       params: {id:key} 
      }); 

Statt die Pfadvariablen zu ersetzen, die ID als Abfrage param angehängt bekommen. dh mein Debugger zeigen die Anforderungs-URL als 'http://localhost:8080/user/:id?id=test'

'http://localhost:8080/user/test' My erwartet aufgelöst URL wie

für die Suche nach
+1

Blog hilfreich für die Ressourcen Verständnis $ - http://fdietz.github.io/recipes-with-angular-js/consuming-external-services/consuming-restful-apis.html –

Antwort

13

$ http des params Objekt gemeint sein sollte, Zeichenfolgen, so dass Schlüssel/Wert-Paare, die Sie an Parameter übergeben, als Abfragezeichenfolgenschlüssel und -werte ausgegeben werden.

$http.get('/user', { 
    params: { id: "test" } 
}); 

Becomes: http://localhost:8080/user?id=test

Wenn Sie http://localhost:8080/user/test, können Sie entweder:

  1. Konstruieren Sie die URL selbst,

    $http.get('/user/' + id);

  2. Oder verwenden Sie $ resource (speziell $ resource.get https://docs.angularjs.org/api/ngResource/service/ $ Ressource). Das ist ein bisschen sauberer.

+0

Wenn Sie sich das Beispiel im geteilten Link anschauen, was bedeutet @id part? var CreditCard = $ ressource ('/ user /: userId/card /: cardId', {userId: 123, cardId: '@ id'}, { kostenpflichtig: {method: 'POST', params: {charge: true }} }); –

1

Warum nicht so etwas wie dieses ?:

var path = 'test'; 
$http.get('/user/' + path, {}); 
+0

Ja, das ist auf jeden Fall Weg. Ich wollte diesen concat Teil vermeiden, da es unordentlich aussieht, wenn wir mehrere Pfadparameter haben. Zum Beispiel:/user /: id/account /: accountId/transaction /: txnid –

+1

Ich sehe ... Dann könnten Sie vielleicht '$ resorce' verwenden (wie @ user2943490 suggeriert ...). – MarcoS

Verwandte Themen