在Delphi中使用REST请求

在Delphi中使用REST请求,delphi,rest,Delphi,Rest,我需要用Delphi编写一个简单的REST服务器,用RubyonRails编写一个客户端。我看了Marco Cantu关于Delphi REST的所有视频,我有一个问题: Delphi如何处理像“/users/1”这样的请求,其中1是用户的ID 我看到的所有示例都使用简单的函数(如EchoString(value)或ReverseString(value)),请求是“Datasnap/rest/ClassName/EchoString/value”,但我需要一个类似“Datasnap/rest/

我需要用Delphi编写一个简单的REST服务器,用RubyonRails编写一个客户端。我看了Marco Cantu关于Delphi REST的所有视频,我有一个问题:

Delphi如何处理像
“/users/1”
这样的请求,其中
1
是用户的ID

我看到的所有示例都使用简单的函数(如
EchoString(value)
ReverseString(value)
),请求是
“Datasnap/rest/ClassName/EchoString/value”
,但我需要一个类似
“Datasnap/rest/ClassName/123”的请求

例如:
TContractsCollection
是合同的集合,我想查看ID=324556
的合同。因此,在浏览器(以及RoR客户端)中,它将是(例如):

但德尔福写道:

“在服务器方法列表中找不到TContractsCollection方法”


有什么想法吗?

您可以在TdmServerModule类函数中定义一个函数

ProcessContract(ContractNo:Integer): String 
什么时候

http://localhost:3000/DataSnap/rest/ProcessContract/324556
调用时,ContractNo将设置为324556

Delphi和Free Pascal提供了一个新的轻量级框架,其中包含请求参数映射,因此您可以使用占位符(如
/users/{userId}
来声明URL。(我是这个框架的作者)公开服务器的内部实现细节,比如类名(TContractCollection),并不是一个好的RESTFul设计。实体(或资源)的命名应易于理解。在本例中,RESTFul URL是,有关更多示例,请参阅Thanke,mjn。我写这封信是为了强调这是一门课,这是一个老问题。不管怎样,我的一点小小的评论是:你是想用DataSnap做这件事,还是接受用ICS做这件事?这对于ICS来说很容易做到,所以如果您想要示例代码演示这一点,请告诉我。
http://localhost:3000/DataSnap/rest/ProcessContract/324556