2017-06-06 4 views
0

J'utilise Web Api 2 pour créer 1 utilisateur. Ci-dessous le codeRenvoyer la valeur booléenne de l'API web

[HttpPost] 
public HttpResponseMessage UpdateUserData(User user) 
{        
    try 
    { 
     //Code 
     . 
     . 
     user.Update(); 
     return Request.CreateResponse(HttpStatusCode.OK, true); 
    } 
    catch (Exception ex) 
    { 
     ExceptionLogger.LogException(ex); 
     return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "error"); 
    } 
} 

J'essaie d'appeler cette méthode à partir du code derrière comme

using (HttpClient client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://localhost:65486/"); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    var response = client.PostAsJsonAsync("api/Stock/UpdateUserData", userObject).Result; 

    if (response.IsSuccessStatusCode) 
    { 
     using (HttpContent content = response.Content) 
     { 
      Task<string> result = content.ReadAsStringAsync(); 
      string final = result.Result; 
     } 
    } 
    else 
    { 
     //code 
    } 
} 

Maintenant, j'ai quelques requêtes

  • Peut-on revenir Valeur booléenne true/false dans HttpResponseMessage. Je veux dire dans CreateErrorResponse.

  • Quelle est la meilleure façon de vérifier si l'utilisateur est mis à jour ou non?

  • Ce code peut-il être amélioré?

Répondre

2

1) Peut-on retourner Valeur booléenne true/false dans HttpResponseMessage. Je veux dire dans CreateErrorResponse?

Techniquement, vous avez les options suivantes

a) CreateErrorResponse va créer un objet httpError.

return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, false.ToString()); 

réponse sérialisé sera

{"Message":"False"} 

b) Ou vous pouvez

return Request.CreateResponse(HttpStatusCode.InternalServerError, false.ToString()); 

réponse sera

"False" 

2) Quelle est la meilleure façon de vérifier si utilisateur ge t mis à jour ou non? 3) Ce code peut-il être amélioré?

À mon avis, il est préférable d'aligner votre api avec la recommandation REST http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

api post Généralement REST renvoie la ressource créée. Ex-

[HttpPost] 
public HttpResponseMessage UpdateUserData(User user) 
{        
    try 
    { 
     // Validate user 
     // if invalid request return Request.CreateErrorResponse(HttpStatusCode.BadRequest, validationErrorMessage); 

     //Code to change user 
     user.Update(); 
     return Request.CreateResponse(HttpStatusCode.Created, user); 
    } 
    catch (Exception ex) 
    { 
     ExceptionLogger.LogException(ex); 
     return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "error"); 
    } 
} 

Si la réponse est autre que 201, cela signifie une erreur lors de la création de l'utilisateur. Les détails de l'erreur doivent figurer dans le message.