2008-08-14 105 views
26

我想开始将我们的应用程序业务层移动到REST Web服务集合中。但是,我们的大多数Intranet都是使用传统ASP构建的,大多数开发人员都是使用传统ASP进行编程。理想情况下,为了让他们从独特的一组web API中受益,必须从Classic ASP页面调用它。从经典的ASP页面调用REST Web服务

我没有丝毫的想法如何做到这一点。

回答

25

您可以使用jQuery的组合使用JSON调用来从客户端消费REST服务

如果你需要从ASP层的REST服务交互可以使用

MSXML2.ServerXMLHTTP

,如:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP") 
HttpReq.open "GET", "Rest_URI", False 
HttpReq.send 
+2

如果我的REST服务需要基本身份验证会怎么样?第二种从传统ASP调用它的方法会发生什么变化? – mutex 2011-02-17 01:54:01

0

所有你需要的是一个HTTP客户端。在.Net中,WebRequest运行良好。对于传统的ASP,你需要一个特定的组件,如this one

3

这里介绍的许多答案似乎涵盖了ClassicASP如何用于消费网络服务& REST调用。

在我看来,一个更加整洁的解决方案可能会让您的ClassicASP仅以REST格式提供数据。如果可能,让基于浏览器的客户端代码处理“混搭”。你应该能够做到这一点,而无需包含任何其他ASP组件。

所以,这里是我会怎么实体模型在ClassicASP崭新的REST支持:

  1. 提供一个单一的ASP网页作为着陆垫
  2. 接触焊盘将处理两个参数:动词和URL ,加上一组表单内容
  3. 使用某种开关块检查URL并将动词(和表单内容)引导到相关处理程序
  4. 处理程序将处理动词(PUT/POST/GET/DELETE )与表单内容一起,返回成功/失败代码加上适当的数据。
  5. 您的着陆垫将检查成功/失败的代码,并返回相应的HTTP状态以及任何返回的数据

你会从解码/编码格式的数据从/到JSON的辅助类中获益,因为这将缓解您的客户端实现(并可能简化传递的数据量)。请参阅Any good libraries for parsing JSON in Classic ASP?的对话

最后,在客户端,提供一种采用Verb,Url和数据有效负载的方法。在短期内,该方法将整理参数并将它们转发到您的着陆台。从长远来看(一旦你从传统的ASP切换)你的方法可以发送数据到'真实'的网址。

好运...

0

另一种可能的解决方案是写一个.NET的DLL,使调用和返回结果(也许包裹类似RESTSharp - 给它定制你需要一个简单的API)。然后,您将该DLL注册为一个COM DLL,并通过CreateObject方法将其用于您的ASP代码中。

我已经完成了这项工作,例如创建签名的JWT和salting和哈希密码。它很好地工作(当你疯狂地重写ASP时)。