2017-08-02 16 views
1

J'essaie d'obtenir Flurl de travailler et je suis bloqué sur comment obtient le travail lors de la transmission d'un ID.Gérer Get/{id} vs Obtenir/id avec flurl

[HttpGet("Get/{id}")] 
public IActionResult Get(int id) 
{ 
    // Some something and return 
} 

qu'attend-dessus

Get/1 

Ainsi, dans Flurl:

var result = await _baseUrl 
    .AppendPathSegment("/Get") 
    .SetQueryParam("id", id) 
    .GetJsonAsync(); 

Ce produit ceci:

/Get?id=8 

... qui échoue avec un 404.

Comment puis-je obtenir Flurl pour définir un param de requête qui est/id ou obtenir mon faire accepter à la fois Get/id et obtenir? Id =

Je peux faire ce qui suit, mais il ne semble pas très élégant

var result = await _baseUrl 
    .AppendPathSegment(string.Format("/Get/{0}", id)) 
    .GetJsonAsync(); 
+1

Je n'ai pas utilisé Flurl, mais je suppose que 'SetQueryParam' établira un querystring, mais vous construisez un chemin. Pouvez-vous faire _baseUrl.AppendPathSegments ("get", id.ToString()) '? – DavidG

+0

@DavidG Je peux, pas besoin de .ToString. C'était simple! Ajoutez une réponse et je vais accepter. Merci –

Répondre

1

SetQueryParam ajoutera la valeur en tant que chaîne de requête, mais vous avez besoin de la valeur pour faire partie du chemin. envisager au lieu d'utiliser la méthode AppendPathSegments, par exemple:

var result = _baseUrl 
    .AppendPathSegments("get", id) 
    .GetJsonAsync(); 
0

Je l'utilise comme ceci:

var result = "https://api.site.com/v1/".AppendPathSegment("endpoint").AppendPathSeparator().SetQueryParam("get", id) 
// Outputs: "https://api.site.com/v1/endpoint/?get=5" 
+0

OP spécifiquement ne veut pas une chaîne de requête si. – DavidG