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