2016-07-08 4 views
2

Ich bin wie diese die neue ServiceStack API:Wie eine benutzerdefinierte Response mit ServiceStack in Kombination mit einem benutzerdefinierten REST-API implementieren

[Route("/me/login/")] 
public class LoginRequest : IReturn<LoginResponse> 
{ 
    public string password { get; internal set; } 
    public string username { get; internal set; } 
} 

public class LoginResponse 
{ 
    public string token { get; set; } 
} 

...

client.PostAsync(new LoginRequest { username = email, password = password }); 

jedoch die Server ist ein Django REST Api. Also, wenn ich ein incorrent Kennwort eingeben ich die folgende Antwort erhalten:

{ 
    "non_field_errors": [ 
     "Unable to login with the given credentials." 
    ] 
} 

Wie kann ich die Informationen in der non_field_errors Eigenschaft abrufen das neue ServiceStack API nutzen? (Was sollte ich außer Kraft setzen?)

Antwort

2

ServiceStack-Service-Clients sind nur für ServiceStack-Dienste gedacht, ich würde ServiceStack's HTTP Utils zum Anrufen von Drittanbieter-Diensten empfehlen.

Die Antwort DTO übereinstimmen, dass JSON aussehen würde:

public class LoginResponse 
{ 
    public string token { get; set; } 
    public string[] non_field_errors { get; set; } 
} 

Wenn die Antwort eine nicht 200 HTTP-Fehler zurückgibt, als Sie die JSON aus dem Fehlerkörperreaktion statt lesen müssen, zum Beispiel:

try 
{ 
    var response = baseUrl.CombineWith("me/login") 
     .PostJsonToUrl(new LoginRequest { ... }) 
     .FromJson<LoginResponse>(); 
} 
catch (Exception ex) 
{ 
    HttpStatusCode? errorStatus = ex.GetStatus(); 
    string errorBody = ex.GetResponseBody(); 
    var errorDto = errorBody.FromJson<LoginResponse>(); 
} 
Verwandte Themen