REST
用TRESTClient控件调用REST架构服务
RESTClient控件返回数据集
用到的控件
RESTClient
RESTRequest
RESTResponseDataSetAdapter
procedure Tfrm_Main.btn_DataSet_FetchDataClick(Sender: TObject); begin ResetRESTComponentsToDefaults; RESTResponseDataSetAdapter.Response:= RESTResponse; RESTResponseDataSetAdapter.Dataset:= ClientDataSet; RESTClient.BaseURL := edt_DataSet_BaseURL.Text; //http://www.developer-experts.net/hdmobile/api/ RESTRequest.Resource := edt_DataSet_ResourceURI.Text; //mandators RESTRequest.Execute; end;
官方例子Studio14.0SamplesObject PascalDatabaseRESTDemo
D:DocumentsEmbarcaderoStudio14.0SamplesObject PascalDatabaseRESTDemo
unit Unit24; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, IPPeerClient, REST.Client, Data.Bind.Components, Data.Bind.ObjectScope, REST.Response.Adapter, Data.DB, Datasnap.DBClient; type TForm24 = class(TForm) DBGrid1: TDBGrid; Button1: TButton; RESTRequest1: TRESTRequest; RESTClient1: TRESTClient; RESTResponseDataSetAdapter1: TRESTResponseDataSetAdapter; ClientDataSet1: TClientDataSet; RESTResponse1: TRESTResponse; DataSource1: TDataSource; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form24: TForm24; implementation {$R *.dfm} procedure TForm24.Button1Click(Sender: TObject); begin RESTResponseDataSetAdapter1.Response := self.RESTResponse1; RESTResponseDataSetAdapter1.Dataset := self.ClientDataSet1; RESTClient1.BaseURL := 'http://www.developer-experts.net/hdmobile/api/'; RESTRequest1.Resource := 'mandators'; RESTRequest1.Execute; end; end.
http://community.embarcadero.com/blogs/entry/rad-studio-10-1-berlin-rest-json-and-using-a-fun-site-name2gender-com
RESTRequest1->AddParameter("Name",UpperCase(Edit1->Text)); RESTRequest1->Execute(); RESTStatusLabel->Text = IntToStr(RESTResponse1->StatusCode)+"/"+RESTResponse1->StatusText; Memo1->Lines->Add(RESTResponse1->JSONText);
RESTRequest1.Params[0].Value := UpperCase(Edit1.Text); RESTRequest1.Execute(); RESTStatusLabel.Text := IntToStr(RESTResponse1.StatusCode)+'/'+RESTResponse1.StatusText; Memo1.Lines.Add(RESTResponse1.JSONText);