使用multipart打造rest粗接口

 使用multipart打造rest粗接口

中间件提供粗接口设计。

粗接口设计是实现微服务的关键。不论二进制还是rest接口,都可以设计“粗接口”。

multipart,既可以序列键值对,也可以序列文件。。。等二进制数据。也就是说,它可以序列所有类型的数据。

 使用multipart,可以方便地打造REST粗接口。粗接口设计后的REST API,在各服务间有且只有一个接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function restfunc(const AReq: TBytes; const ABoundary: string): TBytes;
begin
  var parts: THttpMultiPartFormData := THttpMultiPartFormData.Create;
  try
    try
      parts.InitWithBoundary(ABoundary);     
      parts.Decode(AReq, Length(AReq));
      case StrToIntDef(parts.Fields['cmd'].AsString, 0) of
        cmd_query: Result := query(parts);
      end;
    except
      on e: Exception do
        WriteLog('yn.restfunc.restfunc ' + E.Message);
    end;
  finally
    parts.Free;
  end;
end;

  

1
2
3
4
5
6
7
8
9
10
procedure TForm2.Button2Click(Sender: TObject);
//rest query
begin
  var req: TIdMultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
  req.AddFormField('cmd', IntToStr(cmd_query));
  req.AddFormField('accountno', '1');
  req.AddFormField('sql', 'select * from tgoods');
  Memo1.Text := IdHTTP1.Post(FUrl + '/rest', req);
  req.Free;
end;

  

posted @   delphi中间件  阅读(252)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示