• 使用kbmmw smarthttpservice 简单返回数据库结果


    这个很简单,直接上码。

    服务器端声明过程

    [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;

    我们访问一下试试

    没问题了,一切消停了。

  • 相关阅读:
    k8s 使用 Init Container 确保依赖的服务已经启动
    asp.net core 从 3.0 到 3.1
    Github原生CI/CD,初尝Github Actions
    [nginx]编译安装及安全优化
    [nginx]盗链和防盗链场景模拟实现
    [nginx]location语法
    [nginx]站点目录及文件访问控制
    [svc]nginx限制客户端上传附件的大小
    [sql]mysql指引(整理中...)-对db的分类
    [sql]mysql参数(配置)手册
  • 原文地址:https://www.cnblogs.com/xalion/p/10164798.html
Copyright © 2020-2023  润新知