REST CRUD

REST CRUD

rest api 支持任何语言、前后端调用。

使用APIPost工具测试。

查询

apipost查询

delphi查询

procedure TForm1.Button5Click(Sender: TObject);
//查询
begin
  crud.resource := 'danwei';
  crud.where := 'unitid like ''1%''';
  data := crud.select;
  FDMemTable1.DisableControls;
  FDMemTable1.EmptyDataSet;
  for var row: Tdanwei in data.rows do
    FDMemTable1.AppendRecord([row.Unitid, row.Unitname]);
  FDMemTable1.First;
  FDMemTable1.EnableControls;
end;  

新增 

apipost新增

delphi新增 

procedure TForm1.Button1Click(Sender: TObject);
//新增
begin
  SetLength(data.rows, 1);
  data.rows[0].Unitid := '1';
  data.rows[0].Unitname := '新增';
  crud.resource := 'danwei';
  crud.data := data;
  crud.insert;
end;

修改

apipost修改

delphi修改

procedure TForm1.Button3Click(Sender: TObject);
//修改
begin
  SetLength(data.rows, 1);
  data.rows[0].Unitid := '1';
  data.rows[0].Unitname := '修改';
  crud.resource := 'danwei';
  crud.data := data;
  crud.update;
end;  

删除

apipost删除

delphi删除

procedure TForm1.Button7Click(Sender: TObject);
//删除
begin
  SetLength(data.rows, 1);
  data.rows[0].Unitid := '1';
  crud.resource := 'danwei';
  crud.data := data;
  crud.delete;
end; 

主从表

以主从表查询为例

procedure TRESTdanwei.select2(const req: TRequest; const res: TResponse);
//多表查询
begin
  var pool: TDBPool := GetDBPool('1');
  var db: TDB := pool.Lock;
  try
    try
      var where: string;
      if req.Body <> nil then
        where := TEncoding.UTF8.GetString(TBytesStream(req.Body).Bytes);
      var sql: string;
      if where = '' then
        sql := 'select * from tunit'
      else
        sql := 'select * from tunit where ' + where;
      db.select(sql);
      var tables: TTables<Tdanwei, Tdanwei>;   //2个表
      SetLength(tables.table1.rows, db.qry.RecordCount);
      SetLength(tables.table2.rows, db.qry.RecordCount);
      var i: Integer := 0;
      db.qry.First;
      while not db.qry.Eof do
      begin
        tables.table1.rows[i].unitid := db.qry.FieldByName('unitid').AsString;
        tables.table1.rows[i].unitname := db.qry.FieldByName('unitname').AsString;
        tables.table2.rows[i].unitid := db.qry.FieldByName('unitid').AsString;
        tables.table2.rows[i].unitname := db.qry.FieldByName('unitname').AsString;
        db.qry.Next;
        Inc(i);
      end;
      res.Send(TSerial<TTables<Tdanwei, Tdanwei>>.json(tables));
    except
      on E: Exception do
      begin
        res.Send(error(E.Message));
        writelog('TRESTdanwei.select2()' + E.Message);
      end;
    end;
  finally
    pool.Unlock(db);
  end;
end;

  

 

  

 

posted @ 2023-07-12 17:44  delphi中间件  阅读(199)  评论(0编辑  收藏  举报