Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Webservice: Daten via TFDJSONDataSet an Webclient übergeben (https://www.delphipraxis.net/188568-webservice-daten-via-tfdjsondataset-webclient-uebergeben.html)

rdeutsch 16. Mär 2016 15:49


Webservice: Daten via TFDJSONDataSet an Webclient übergeben
 
Hallo zusammen

Daten aus einer Datenbank sollen als REST/JSON einem Webclient zur Verfügung gestellt werden. Dieser Webclient wird mit AangularJS geschrieben.

Nun habe ich mich etwas in die Datasnap/Webservice-Thematik eingearbeitet, bzw. das eine oder andere Tutorial gelesen und die Demoprojekte nachgebaut. Soweit so gut. In einem Demo werden Datenbankabfragen als JSONObject z.B. auf diese Art für den Webclient zur Verfügung gestellt:

Delphi-Quellcode:
procedure TWebModule1.WebModule1GetGeschaefteAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

begin
    FDQryGeschaefte.Active := False;
    FDQryGeschaefte.ParamByName('geschtyp_min').AsInteger := StrToInt(Request.QueryFields.values['min']);
    FDQryGeschaefte.ParamByName('geschtyp_max').AsInteger := StrToInt(Request.QueryFields.values['max']);

    // Put results in a JSON object...
    FDQryGeschaefte.Active := true;
    if FDQryGeschaefte.Active then begin
      if FDQryGeschaefte.RecordCount>0 then begin
        a := TJSONArray.Create;
        try
          FDQryGeschaefte.First;
          while (not FDQryGeschaefte.Eof) do begin
            o := TJSONObject.Create;
            o.AddPair('Lfnr',TJSONNumber.Create(FDQryGeschaefte.FieldByName('LFNR').AsInteger ));
            o.AddPair('BezHGUmgang',FDQryGeschaefte.FieldByName('BEZHGUMGANG').AsString );
            a.AddElement(o);
            FDQryGeschaefte.Next;
          end;
        finally
          Response.ContentType := 'application/json';
          Response.Content := a.ToString;
          a.DisposeOf;
        end;
      end;
    end;
   
end;

In einem anderen Tutorial werden andererseits DB-Abfragen aber auch z.B. auf diese Art an einen DataSnap-Client weitergegeben:

Delphi-Quellcode:
function TServerMethods1.GetGeschaefte(const myGeschTypMin, myGeschTypMax: integer): TFDJSONDataSets;
begin

  // Clear active so that query will reexecute.
  FDQryGeschaefte.Active := False;
  FDQryGeschaefte.ParamByName('geschtyp_min').AsInteger := myGeschTypMin;
  FDQryGeschaefte.ParamByName('geschtyp_max').AsInteger := myGeschTypMax;

   // Create dataset list
  Result := TFDJSONDataSets.Create;
  TFDJSONDataSetsWriter.ListAdd(Result, 'Geschaefte', FDQryGeschaefte);

end;
Nun meine Frage:
Wie kann man die Daten wie in Variante 2 für einen Webclient (NICHT-Delphiclient) bereitstellen? So wie ich das sehe, ist Variante 2 nur für Datasnap-Clients geeignet oder sehe ich das falsch?

Wäre natürlich schön, wenn sich Variante 2 auch für Webclients anwenden liesse. Somit würde das aufwändige Aufbereiten der Daten wegfallen.

Vielen Dank für eure Hilfe und Tipps.

Robert


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz