posts - 229,  comments - 526,  trackbacks - 0

这个很简单,直接上码。

服务器端声明过程

[kbmMW_Rest('method:get, path:querytable')]
     [kbmMW_Method]
     function querytable(

          [kbmMW_Rest('value: "$tname", required: true')] const tblname:string;

          [kbmMW_Rest('value: "$id", required: true')] const id:string):Tkbmmemtable;

具体实现代码

function TkbmMWCustomHTTPSmartService1.querytable(const tblname,
  id: string): Tkbmmemtable;
 var
   sqls:string;

begin
     if tblname='' then
      begin
          kbmMWRaiseHTTPError(500,'result:{"ok":"error","value":"table not exist! "}');
      end;

    sqls:='select * from '+tblname;
    if id<>'' then
     begin
       sqls:=sqls+' where CustNo='+id;

     end;

    cx.sql.text:=sqls;
     try
        cx.open;
     except
          on e:exception do

          kbmMWRaiseHTTPError(500 ,e.Message);

     end;

   result:=Tkbmmemtable(cx);

end;

运行结果

 

 由于这个返回对象是 Tkbmmemtable.

因此出现错误后,服务器返回的是500, 没办法显示具体的错误。

其实对于这个问题,我们也可以解决。

首先我们增加一个 错误信息表

 

 然后我们把错误信息写到这个表里面就可以了

function TkbmMWCustomHTTPSmartService1.querytable(const tblname,
  id: string): Tkbmmemtable;
 var
   sqls:string;

begin
result:=errtable;
   errtable.Active:=True;
   errtable.EmptyTable;
     if tblname='' then
      begin
          errtable.Append;
          errtable.FieldByName('ok').AsString:='error';
          errtable.FieldByName('msg').AsString:='table not exist!';
          errtable.Post;
         
         exit;

      end;

    sqls:='select * from '+tblname;
    if id<>'' then
     begin
       sqls:=sqls+' where CustNo='+id;

     end;

    cx.sql.text:=sqls;
     try
        cx.open;
     except
          on e:exception do
          begin
             errtable.Append;
             errtable.FieldByName('ok').AsString:='error';
             errtable.FieldByName('msg').AsString:=e.Message;
             errtable.Post;
             exit;

          end;

     end;

   result:=Tkbmmemtable(cx);

end;

我们访问一下试试

没问题了,一切消停了。

 

posted on 2018-12-23 17:02 xalion 阅读(...) 评论(...) 编辑 收藏