Hallo miteinander
Ich will eine Web-Api mit meinem Android-Telefon ansprechen.
Umgesetzt wird das mit Java, Retrofit,Livedata, RXJava
Der Ablauf ist Simpel:
1. Logindaten müssen zur API gesendet werden
2. API sendet ein Session-Token
3. Alle weitere Abfragen über den Token + Benutzer-Id
Login
Ich habe eine Abstrakte Klasse Service, welche die Daten für das Login enthalten, z. B. SessionToken
Hier bin ich nicht sicher ob das so in Ordnung ist.
Repository
Das Repository enthält alle Services, welche von der API angeboten wird.
Mapper zum JSON in Klassen
Die HTTP-Anfrage mache ich mit Retrofit 2, welche auch direkt das Mapping vom JSON-String übernimmt.
Soweit ich verstehe, ist die Klasse, welche die Daten für das Mapping entählt als DTO bezeichnet und die Daten innerhalb vom DTO als DAO richtig?
Ist den den die Variabel links auch ein DAO oder ein DTO, weil Link eine eigene Klasse ist?
Meine Frage:
Ich will eine Web-Api mit meinem Android-Telefon ansprechen.
Umgesetzt wird das mit Java, Retrofit,Livedata, RXJava
Der Ablauf ist Simpel:
1. Logindaten müssen zur API gesendet werden
2. API sendet ein Session-Token
3. Alle weitere Abfragen über den Token + Benutzer-Id
Login
Ich habe eine Abstrakte Klasse Service, welche die Daten für das Login enthalten, z. B. SessionToken
Hier bin ich nicht sicher ob das so in Ordnung ist.
Repository
Das Repository enthält alle Services, welche von der API angeboten wird.
- getLiveDataXY (Gibt das LiveData Objekt zum Service XY)
- requestServiceXY(Das Repository fragt nach den Daten)
Code:
public void requestServiceXY() {
try {
Single<TestData> observable = new ServiceXY().send();
observable
.timeout(30, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<TestData>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(TestData response) {
liveDataTest.setValue(response);
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
Mapper zum JSON in Klassen
Die HTTP-Anfrage mache ich mit Retrofit 2, welche auch direkt das Mapping vom JSON-String übernimmt.
Code:
public class ResponseLogin {
private String sessionToken;
private String sessionExpires;
private int userId;
private boolean isAuthenticated;
private ArrayList<Link> links;
}
Soweit ich verstehe, ist die Klasse, welche die Daten für das Mapping entählt als DTO bezeichnet und die Daten innerhalb vom DTO als DAO richtig?
Ist den den die Variabel links auch ein DAO oder ein DTO, weil Link eine eigene Klasse ist?
Meine Frage:
- Ist es in Ordnung, wenn ich eine abstrakte Service-Klasse habe, welche über eine Klasse die Benutzerdaten sowie die Session-Daten speichert oder wäre eine andere Möglichkeit zu Bevorzugen?
- Ist beim JSON-Mapping, die Klasse, welche die Daten enthält ein DTO und die Daten darin sind DAO's?
- Ist der Link bei der Variabel links ein Dao oder ein DTO (weil eigene Klasse)?