Es gibt 2 Gründe wann REST-APIs erstellt und verwendet werden können.
Der 1. ist, wenn beim Erstellen der Lösung mit dem appsolut-Architect „REST-API“ angehakt wurde.
In diesem Fall sind in dem Bestätigungsemail, welches Du nach dem Erstellen der Lösung im appsolut-Architect zugeschickt bekommst, neben den Zugangsdaten zu Deiner Web-Lösung auch die URL sowie sämtliche notwendigen Informationen zur Authentifizierung und Verwendung der APIs enthalten.
Über die mitgeschickte „Swagger“-URL wird Dir auch ein einfacher und übersichtlicher Überblick über alle zur Verfügung stehenden APIs geboten.
Die Kommunikation mit den APIs wird über einen tokenbasierten „BASIC“-Authentifizierungsmechanismus ermöglicht.
Das bedeutet, dass jeder Request einen gültigen Token als Header-Parameter mitliefern muss. Dieser Token kann über die GetToken-API erstellt werden.
Jeder Token ist 10 Minuten gültig, danach muss erneut ein Token erstellt werden. Andernfalls wird ein HTTP 401 Unauthorized Fehler zurückgeliefert.
Der Name des Header-Parameters für den Token sowie Username und Password für die BASIC-Authentifizierung werden wie beschrieben in der Bestätigungsemail einmalig zugesandt.
Zum besseren Verständnis folgt ein Codebeispiel in C#
Holen des Token:
string baseAddress = "https://DeineAppApi.appsolut.com/";
var username = "DeineAppUser";
var password = "DeineAppPWD";
using (var client = new HttpClient())
{
var authData = string.Format("{0}:{1}", username, password);
var authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);
client.BaseAddress = new Uri(baseAddress);
HttpResponseMessage response = await client.GetAsync("api/Appsolut/GetToken");
if (response.IsSuccessStatusCode)
{
KeyValuePair<string, IEnumerable<string>> result = response.Headers.Where(i => i.Key == "DeineAppToken").FirstOrDefault();
return result.Value.FirstOrDefault();
}
}
Nutzen des Tokens beim Konsumieren einer API
string token = await GetToken("https://DeineAppApi.appsolut.com/");
using (var httpClient = new HttpClient())
{
string jsonStringOfUsers = JsonConvert.SerializeObject(new MwSt_DTO());
HttpContent content = new StringContent(jsonStringOfUsers, Encoding.UTF8, "application/json");
content.Headers.Add("DeineAppToken", token);
httpClient.BaseAddress = new Uri(baseAddress);
httpClient.DefaultRequestHeaders.Add("DeineAppToken ", token);
var response = await httpClient.GetAsync("api/Firma/GetBy_Id/3");
response.EnsureSuccessStatusCode();
Task<string> responseBody = response.Content.ReadAsStringAsync();
var firma = JsonConvert.DeserializeObject<Firma>(responseBody.Result);
}
Dieses Codebeispiel veranschaulicht eine einfache Kommunikation inklusive dem Erstellen eines neuen Token.
Der 2. Grund der die Erstellung und Veröffentlichung von REST-APIs auslöst ist das Anhaken von Android oder UWP-App.
In diesem Fall werden die Zugangsdaten zu den APIs nicht per Email verschickt.
Da für die Kommunikation der App mit der datenhaltendenden Web-Lösung entsprechende Web-Schnittstellen benötigt werden, müssen die erforderlichen Schnittstellen automatisch erstellt und veröffentlich werden.
Diese APIs sind selbstverständlich ebenfalls über eine tokenbasierte „BASIC“- Authentifizierung geschützt.
Username, Password und Headername für die Übermittlung des Tokens werden automatisch erstellt und sind aber weder öffentlich zugänglich, noch werden diese Informationen in irgendeiner Art preisgegeben.