首页 > 其他分享 >最精简使用mORMot (一)

最精简使用mORMot (一)

时间:2024-04-24 11:15:02浏览次数:11  
标签:end TForm1 method mORMot 使用 精简 svr Ctxt

最精简使用mORMot (一)

本文非原创,本文来自博客园,作者:{咏南中间件}

mORMot是免费开源的SDK,它封装了HTTP.SYS,这是许多人使用它的原因,但mORMot本身已经被封装的很庞大,它提供许多的单元,这让人不免眼花缭乱,惊恐而不敢下手试用。

其实,我们完全可以最精简使用mORMot,比如笔者就 只使用它的HTTP.SYS通讯部分 ,其他部分舍弃不用。

只需要复制mORMot的以下几个单元文件:

SynCommons.pas,SynCrtSock.pas,SynLZ.pas,SynZip.pas,SynWinSock.pas,

Synopse.inc,SynopseCommit.inc,

trees.obj,deflate.obj。

总共9个文件。

unit Unit1;
 
interface
 
uses
  SynCommons, SynCrtSock, SynZip, Windows, Messages, SysUtils, Variants, Classes,
  Graphics, Controls, Forms, Dialogs;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    svr: THttpApiServer;
    /// <summary>
    /// 处理客户端http请求,并返回结果
    /// </summary>
    /// <param name="Ctxt">http 请求</param>
    /// <returns>成功--200;失败--404</returns>
    function Process(Ctxt: THttpServerRequest): cardinal;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  svr := THttpApiServer.Create(True); // 创建http通信
  svr.RegisterCompress(CompressGZip); // 压缩
  svr.Clone(8); // 创建N个工作线程
  svr.AddUrl('', '1122', False, '+', True); // 注册http URL
  svr.AddUrl('', '2211', True, '+', True); // 注册https url
  svr.OnRequest := Process; // 处理通信事件
  svr.Start; // 开启HTTP通信
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  svr.Shutdown;
  svr.Free;
end;
 
function TForm1.Process(Ctxt: THttpServerRequest): cardinal;
var
  method: string;
  fn: RawUTF8;
begin
  Result := 404; // 失败--404; 成功--200
  Ctxt.OutCustomHeaders := 'Access-Control-Allow-Origin:*'; // 允许跨域访问
  Ctxt.OutContentType := 'text/plain; charset=GBK';  // 应答字符集和样式
  method := Ctxt.method;
  if method = 'GET' then
  begin
    FN := SynCommons.StringReplaceChars(UrlDecode(copy(Ctxt.URL, 2, MaxInt)), '/', '\');
  end
  else if method = 'POST' then
  begin
 
  end;
end;
 
end.

标签:end,TForm1,method,mORMot,使用,精简,svr,Ctxt
From: https://www.cnblogs.com/hieroly/p/18154576

相关文章

  • ansible 安装以及简单使用
    自动化运维工具-ansible1.ansible的安装我选择的是rpm包安装下载地址:链接:https://pan.baidu.com/s/1dqm_QDGjd9oSNS5qEZzD5Q?pwd=34s5提取码:34s5 下载之后直接rpm-ivh sshpass-1.06-2.el7.x86_64.rpmrpm-ivh ansible-2.9.5-1.el7.ans.noarch.rpm2.ansible配置修改......
  • 最精简使用mORMot (二)
    最精简使用mORMot[关于REST和WS]本文非原创,找了几个出处没有找到原始连接,特意整理收藏以下是关于“最精简使用mORMot”的完整攻略,包括基本概念、步骤和两个示例说明。基本概念mORMot是一个开源的ObjectPascal框架,用于构建高性能可扩展的Web应用程序和服务。它提供了一组强大......
  • 在Linux中,如何使用grep命令搜索文本?
    grep是Linux系统中非常强大的文本搜索工具,它允许用户使用正则表达式搜索文本,并将匹配的行打印到标准输出。下面我将详细解释如何使用grep命令进行文本搜索。1.基本语法grep[OPTIONS]PATTERN[FILE...]PATTERN:要搜索的模式或正则表达式。FILE:要搜索的文件名。如果省......
  • 在Linux中,如何使用sed命令进行文本替换?
    在Linux中,sed(StreamEditor)是一个用于处理文本流的命令行工具,它非常适合用于执行基本的文本转换。sed可以读取输入的文本文件,根据指定的指令对文本进行处理,并将结果输出到标准输出设备。以下是如何使用sed命令进行文本替换的详细说明:1.基本语法sed命令的基本语法如下:sed's/re......
  • 在Linux中,awk命令的如何使用?
    在Linux中,awk是一个强大的文本处理工具,它允许你按照模式扫描文件,并根据扫描结果执行相应的操作,比如打印、修改或过滤文件中的数据。awk的语法灵活,可以进行复杂的文本分析和数据处理。下面是使用awk命令的一些基本概念和常见用法:1.基本结构awk的基本命令格式如下:awk'pattern{......
  • 在Linux中, 如何查看系统的资源使用情况?
    在Linux系统中,查看资源使用情况对于系统管理员来说是一项常规任务,它有助于了解系统的性能和瓶颈。以下是一些常用的命令和方法来查看系统的资源使用情况:1.查看CPU使用情况top:显示实时的CPU使用情况,包括用户空间、系统空间、空闲和每个进程的CPU占用率。tophtop:top的增强......
  • 使用 Gradio 的“热重载”模式快速开发 AI 应用
    在这篇文章中,我将展示如何利用Gradio的热重载模式快速构建一个功能齐全的AI应用。但在进入正题之前,让我们先了解一下什么是重载模式以及Gradio为什么要采用自定义的自动重载逻辑。如果您已熟悉Gradio并急于开始构建,请直接跳转到第三部分构建文档分析应用。重载模式具体是......
  • Java 断言 Assert 使用教程与最佳实践
    本文收录于Github.com/niumoo/JavaNotes,Java系列文档,数据结构与算法!本文收录于网站:https://www.wdbyte.com/,我的公众号:程序猿阿朗作为一个Java开发者,如果要问你Java中有哪些关键字,你可能会随口说出一串,如果问你Java有哪些最不常使用的关键字,或许你还能说出几个。但是......
  • 在该serializer中使用source参数指定序列化时使用的字段的choices选项
    在序列化中获取time_unit字段的中文名称,你可以使用choices选项中定义的第二个值,即元组中的第二个元素。你可以通过定义一个serializer,然后在该serializer中使用source参数指定序列化时使用的字段,如下所示:fromrest_frameworkimportserializersclassWK006HModelSerializer(s......
  • 使用ollama分别在我的window、mac、小米手机上部署体验llama3-8b
    1、ollama到底是个什么玩意一句话来说,Ollama是一个基于Go语言开发的简单易用的本地大模型运行框架。可以将其类比为docker(有类似docker中的一些常规命令list,pull,push,run等等),事实上确实也制定了类似docker的一种模型应用标准,在后边的内容中,你能更加真切体会到这一点。......