Beispiel RestAPI

Re: Beispiel RestAPI

Beitragvon epos » 12. Nov 2019, 05:13 Re: Beispiel RestAPI

Da gibt es eine exeption. Die Meldung innerhalb der IDE ist im Anhang.

Wenn das Programm "nomal", also mit DoppleKlick auf die EXE gestartet wird, ist "Access violation" angezeigt.
Dateianhänge
exeption01.jpg
exeption01.jpg (12.06 KiB) 394-mal betrachtet
epos
 
Beiträge: 4
Registriert: 11. Nov 2019, 07:06

Beitragvon Warf » 14. Nov 2019, 21:49 Re: Beispiel RestAPI

epos hat geschrieben:Da gibt es eine exeption. Die Meldung innerhalb der IDE ist im Anhang.

Wenn das Programm "nomal", also mit DoppleKlick auf die EXE gestartet wird, ist "Access violation" angezeigt.


Ja hab grad mal nachgeschaut, hab mich vertan, man muss selbst eine Stream klasse bereitstellen. Die angepasste version wäre also:
Code: Alles auswählen
 
type
  ELoginFailedException = class(Exception);       
 
[...]
 
function Login(User: String; Pass: String): String;
var client: TFPHTTPClient;
  json: string;
  Req: TStringStream;
begin
  json := '{"username": "%s", "password": "%s"}'.Format([User, Pass]);
  client := TFPHTTPClient.Create(nil);
  Req := TStringStream.Create(json);
  try
    client.AddHeader('Content-Type', 'application/json');
    client.RequestBody := Req;
    Result := client.Post('https://api.xxxxx.de/api/v2/login');
    if client.ResponseStatusCode <> 200 then
      raise ELoginFailedException.Create('Wrong login data')
  finally
    client.Free;
    Req.Free;
  end;
end;
Warf
 
Beiträge: 1263
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: MacOS | Win 10 | Linux | 
CPU-Target: x86_64
Nach oben

Beitragvon epos » 16. Nov 2019, 07:08 Re: Beispiel RestAPI

Vielen Dank warf.
Es klappt. Ich erhalte ein Access-Token.
epos
 
Beiträge: 4
Registriert: 11. Nov 2019, 07:06

Beitragvon epos » 13. Dez 2019, 10:46 Re: Beispiel RestAPI

Hallo zusammen ich habe da noch Verständnisprobleme und komme nicht weiter. Vielleicht habt ihr einige Codebeispiele.

Die Abmeldung

Der mit dem Request übergebene Access-Token wird vom System abgemeldet.
URL: https://api.xxxxx.de/api/v2/logout

Es werden wohl keine Daten oder das Access-Token übergeben und es erfolgt keine Rückmeldung.



Und dann der Zugang zur Abfrage. Muss jedes Mal vorher das Access-Token gesendet werden?

Bei allen Requests, mit Ausnahme des Login, wird der Zugang über den Access-Token authentifiziert, der auf zwei Wegen übergeben werden kann:

Erster Weg HTTP Authorization Header mit Wert “Bearer“ gefolgt vom Access-Token:

https://api.xxxxx.de/api/v2/product/29e ... 48c75af64f

Antwort Header
Connection close
Content-Type Application/json; charset=UTF-8
Date xxx yyyy zzz usw
Transfer encoding chunked

Anfrage Header
Accept application/jsonm text/javascript, */’; q=0.01
Accept –Encoding gzip, deflate
Accepz-Language de, en-US;q=0.7, en;q=0.3
Autorisation Bearer 123avf67-3355-6421-usw



Zweiter Weg URL Parameter access_token:

https://api.xxxxx.de/api/v2/logout?acce ... fe7700bd79

Bei nicht erfolgreicher Authentifizierung wird ein http-Statuscode 401 im JSON-Format zurückgegeben:
{
"error": "invalid_token",
"error_description": "Invalid access token: 98592fc6-61e6-4ed2-8f9e-f3fe7700bd79"
}


Und dann ist da die Abfrage an die URL.

URL: https://api.xxxxx.de/api/v2/products?page%3D<pageno>%26size%3D<size>%26[sort%3D<column>%26direction%3D<direction>][%26search%3D<value>][%26active%3D<active>][&26source%3D<source>]
Protokoll: HTTPS
Method: POST
Authentifizierung erforderlich: Ja

Wie erhalte ich die Ergebnisse der Abfrage?

Die Kommunikation mit der Schnittstelle ist mir noch nicht klar.
epos
 
Beiträge: 4
Registriert: 11. Nov 2019, 07:06

• Themenende •
Vorherige

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

porpoises-institution
accuracy-worried