我使用Delphi XE2编写DataSnap REST服务.我注意到DataSnap中的REST URI必须严格遵循此格式(参见
here):
http://my.site.com/datasnap/rest/URIClassName/URIMethodName[/inputParameter]*
一个着名的例子是DataSnap服务器向导创建的示例方法:
http://my.site.com/datasnap/rest/TServerMethods1/ReverseString/ABC
在URI中提供参数有两种常用的方法:
>路径段参数:/ TServerMethods1 / ReverseString / ABC
>查询字符串参数:/ TServerMethods1 / customers?name = bill
DataSnap REST绝对支持Path Segment参数URI.是否在DataSnap REST中查询字符串参数URI?
我有以下REST URI示例,发现似乎不可能使其与当前的DataSnap REST库一起使用:
> / customers / A1234
返回ID A1234的客户对象
> /customers/A1234.xml
以XML格式返回ID A1234的客户对象
> /customers/A1234.json
以json格式返回ID A1234的客户对象
> /customers/A1234.html
以HTML格式返回ID A1234的客户对象
> / customers?name = Bill
返回名单包含Bill的客户名单
解决方法
我不知道如何使用DataSnap,但是有一些方法.您可以将一些名为URLRewrite的东西用于此,因为您友好的URI和DataSnap所需的URI都很容易映射.
对于IIS,您可以使用(启用)IIS 7中标准的URLRewrite模块.更多信息可以在官方网站:http://www.iis.net/download/urlrewrite上找到.
确保为inbound和outbound URI创建规则,以便“内部”(Datasnap)URI不会出现在野外.
如果您在Apache上运行该站点,则可以使用类似的功能,而且我需要修改.htaccess文件,但是我没有Apache的经验,所以我可能是错误的.