【问题标题】:REST Datasnap override URI mappingREST Datasnap 覆盖 URI 映射
【发布时间】:2011-11-22 16:11:35
【问题描述】:

我在 delphi XE2 中使用 REST datasnap 编写了一个小型 REST 服务器。 HTTP 方法(POST、PUT 等)和 delphi 中定义的函数之间存在默认映射,这是由 delphi 组件完成的。

This wiki entry 描述了 URI 映射,但也注意到程序员可以覆盖默认映射。

映射模式可以被覆盖。用户可以根据类名和方法名参数覆盖每种类型的映射。

但我没有找到任何解释如何覆盖映射。

如何更改默认映射?

【问题讨论】:

标签: delphi rest uri delphi-xe2 datasnap


【解决方案1】:

TDSHTTPService 组件具有事件,您可以在其中指定每种类型的映射。这些事件称为 RESTMethodNameMapDELETE、RESTMethodNameMapGET、RESTMethodNameMapPOST 和 RESTMethodNameMapPUT。

这也在 Marco Cantù 的 white paper on REST 中进行了解释,其中解释了很多关于 REST 和 Datasnap 的内容。

【讨论】:

  • 感谢您的回答,我会在我回到办公室时尝试一下。不过上次没找到这些事件,我现在仔细看看。
  • 上面的命名事件好像是在TDSHTTPServerTransport中实现的,TDSHTTPService继承自它。我搜索了 TDSHTTPServerTransport 的源代码,但找不到这些事件。
  • 您的服务器设计中有 TDSHTTPService 组件吗?因为那里是我分配给他们的地方。
  • 是的,我加了一个。我用的是XE2,你运行的是哪个版本?
  • 我在用XE,而且我正在换工作,所以我不再用Delphi,因此在XE2中找不到你..
【解决方案2】:

我也想知道同样的事情,并做了一些实验。似乎至少部分可以控制 url。具体来说,我尝试更改 url 的类名部分。

基本上,如果您使用的是 TComponent 后代,您可以将类命名为任何名称。但是,如果您从 TDataModule 下降,这将不起作用。在这种情况下,您可以创建和别名类,您可以命名您想要的从 TDataModule 中继承的类。

在尝试绑定到 this 时,您需要在客户端绑定中进行一些清理,但它似乎有效,至少对于简单的测试而言。

在 Embarcadero 论坛上查看更多信息。

https://forums.embarcadero.com/thread.jspa?threadID=77624&tstart=0

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2012-02-20
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多