Ich schreibe REST api
Aufrufe an Google Klassenzimmer. Zum Beispiel im Anruf - https://classroom.googleapis.com/v1/userProfiles/ {userId
}. Wenn der Benutzer Google Klassenzimmer aktiviert hat, erhalte ich einen json
von UserProfile
Typ.Generische Klasse, um zwei verschiedene HTTP-Antwort zu behandeln
{
"id": "XXXXX",
"name": {
"givenName": "student1",
"familyName": "User",
"fullName": "student1 User"
}
}
Else, Wenn der Benutzer, ich dies keinen Zugriff hat bekommen.
{
"error": {
"code": 403,
"message": "@NotGoogleAppsUser The user is not a Google Apps user.",
"status": "PERMISSION_DENIED"
}
}
Verfahren REST
Anrufe zu machen, ist ein Generic
Methode, die für alle anderen Anrufe wiederverwendet werden viele verschiedene Arten zurück.
public T SendRequest<T>(RequestWrapper wrapper)
{
RestSharp.Deserializers.JsonDeserializer deserial = new RestSharp.Deserializers.JsonDeserializer();
var client = new RestClient(wrapper.Url);
RestRequest request = CreateRequest(
wrapper.Data,
wrapper.Header,
wrapper.Method);
IRestResponse response = client.Execute(request);
return deserial.Deserialize<T>(response);
}
Das Problem ist, wenn ich UserProfile
als T-Typ senden, ich den Zugangscode nicht erhalten, nachdem die Antwort deserialisiert wird.
Gibt es eine Möglichkeit, wie ich meine Klassen neu gestalten kann, so dass ich alle response
in einer T type
bekommen.
Die ursprüngliche Idee war es, eine Fehlerklasse zu erstellen und UserProfile
es erben machen, was nicht möglich ist, wie UserProfile
zu einem external DLL
gehört.
Irgendwelche anderen Lösungen? TIA
Dies ist ein Fall für verboten ist, ich habe einen anderen Fall, in dem der Auth-Token abgelaufen ist und es regenerieren müssen. – SJMan