delphi - 如何在 Delphi DataSnap REST 服务器上映射自定义 HTTP 方法前缀

标签 delphi rest delphi-xe datasnap delphi-xe7

使用 Delphi 的 DataSnap 创建的 RESTful 服务为来自 DataSnap 服务器的基于 HTTP 方法类型的公开 REST 方法提供默认的前缀映射。具体如下:

HTTP Method type   Prefix       Example
GET                none         MyValue
POST               Update       UpdateMyValue
PUT                Accept       AcceptMyValue
DELETE             Cancel       CancelMyValue

文档指出“映射模式可以被覆盖。用户可以根据类名和方法名参数覆盖每种类型的映射。”但是,我完全找不到任何有关如何执行此操作的文档。我想将 PUT 的前缀从 Accept 更改为其他内容。我该怎么做?

我应该注意到 StackOverflow 上的另一篇文章 ( REST Datasnap override URI mapping ) 试图通过指出 TDSHTTPService 具有执行此映射的方法来回答这个问题。同一篇文章还引用了 Marco Cantù 的 DataSnap 白皮书,据说该白皮书也描述了如何做到这一点。该白皮书称“您可以通过处理 DSHTTPWebDispatcher 组件的四个相应事件处理程序来自定义这些映射。”

在 RAD Studio XE 中,TDSHTTPService 和 TDSHTTPWebDispather 组件都有四个特定事件,对应于上面列出的四个 HTTP 方法,并且这些事件是为映射前缀而设计的。 XE2及更高版本中不存在这些方法。

最佳答案

虽然可以将 DataSnap POST、PUT 和 DELETE HTTP 方法调用映射到 XE 中的替代前缀,但在 Delphi XE2 到 Delphi XE8 中不可能这样做。在这些版本中,您必须分别坚持“更新”、“接受”和“取消”。而且,说实话,这并不是一个真正的问题。

值得注意的是,您可以使用 Embarcadero 的企业移动服务 (EMS) 映射各种 HTTP 方法调用。我为 Embarcadero 撰写了一份白皮书并录制了有关 EMS 的视频演示。要访问白皮书和视频,请使用以下 URL。

http://www.embarcadero.com/rad-in-action/mobilizing-your-business-with-cary-jensen

关于delphi - 如何在 Delphi DataSnap REST 服务器上映射自定义 HTTP 方法前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223031/

相关文章:

c++ - 如何像 Delphi 应用程序一样创建独立的(没有 DLL 文件依赖项)C++Builder 控制台应用程序?

delphi - JEDI WSCL 中的 RangeCheckError

java - 为什么 QueryParams 的存在会影响 Jersey 匹配顺序?

rest - Google Admin SDK - 服务帐户无法访问资源

c++ - Delphi COM 将 ByteArray 作为 OleVariant 传递

用于编辑键/值对的 Delphi 控件?

delphi - 使用 TJpegImage 组件将 bmp 转换为 jpg 时出现问题

java - 使用 Delphi 将 JLong 转换为 Double 类型

wcf - WCF、Rest 和 SOAP 之间是什么关系?

amazon-s3 - 发出 S3 GET 请求时收到 400 Bad request