微服務調用(http)


微服務調用(http)

微服務可以是http的RESTful API也可以是二進制流服務等。

restful api調用演示

procedure TForm2.Button2Click(Sender: TObject);
//rest 查詢
begin
  var req: TIdMultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
  req.AddFormField('cmd', IntToStr(cmd_query));
  req.AddFormField('accountno', '1');
  req.AddFormField('sql', 'select top 2 * from tunit');
  Memo1.Text := IdHTTP1.Post(FUrl2, req);  //'http://localhost:1580/rest?service=dal';
  req.Free;
  ClientDataSet1.FromJson(Memo1.Text);
end;

 二進制流調用演示

procedure TForm2.Button1Click(Sender: TObject);
//msgpack 查詢
begin
  var pack: TMsgPack := TMsgPack.Create;
  pack.Force('cmd').AsInteger := cmd_query;                //命令字
  pack.Force('accountno').AsString := '1';                 //數據庫帳套號
  pack.Force('tablenum').AsInteger := 2;                   //查幾個表
  pack.Force('sql1').AsString := 'select * from tgoods';
  pack.Force('sql2').AsString := 'select * from tunit';
  var req: TBytesStream := TBytesStream.Create;
  var res: TBytesStream := TBytesStream.Create;
  pack.EncodeToStream(req);
  req.Position := 0;
  IdHTTP1.Post(FUrl, req, res); //'http://localhost:1580/msgpack?service=dal'
  pack.Clear;
  res.Position := 0;
  pack.DecodeFromStream(res);
  if pack.Force('return').AsBoolean then
  begin
    ClientDataSet1.Data := pack.Force('dataset1').AsVariant;
    ClientDataSet2.Data := pack.Force('dataset2').AsVariant;
  end
  else
    ShowMessage(pack.Force('err').AsString);
  pack.Free;
  req.Free;
  res.Free;
end; 
二進制流調用url
http://localhost:1580/msgpack?service=dal
rest json調用url
http://localhost:1580/rest?service=dal
service=dal,表示調用dal微服務

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM