rest - 使用 ASP Classic / JScript 在 IIS 上设置 REST API
问题描述
我需要将现有的 API 作为 REST 公开给外界,出于某些内部原因,我决定使用 IIS8 + ASP Classic + JScript。我成功地为 ASP Classic 设置了 IIS,并使用 JScript 形成了 JSON 响应(使用 HTMLFile 的 hack在这里有很大帮助)。看来我需要为每个公开的资源一个单独的 ASP 页面(JSCript 代码),但我不清楚在访问特定资源时如何设置重定向以到达适当的 ASP,例如
访问 http://server/some-resources/123 应该被重定向到 ASP 'some-resources.asp',而我需要在 JScript 中获取原始 URL,调用后端并响应带有 id 的 some-resource 的内容=123
同样,对于 http://server/other-resources,它应该访问 ASP 'other-resources.asp' 并以其他资源的集合进行响应(可能使用一些分页机制)。所以问题是
- 这个“每个资源的 ASP”的基本概念是一个好主意,还是有另一个“标准”?
- 如果是,如何设置 IIS 重定向以访问适合此资源的任何 URL 的适当 ASP(单个资源、集合......)
解决方案
您应该能够在 IIS 中编写重写规则以将 http://server/resource/123 指向 http://server/resource.asp?id=123。或者,您可以将所有代码放在一个巨大的 ASP 文件中并重定向到 http://server/onegiantaspfile.asp?res=resource&id=123,再次使用重写规则。
我也通过在 404 处理程序中使用魔法来做到这一点,但从长远来看,我发现它很脆弱。它绝对有效,但它有点不标准。尽管如此,当我们将它从服务器移植到服务器以及从 Window Server 版本移植到 Windows Server 版本时,我有一个以这种方式工作了 15 年的 Web 应用程序,只需要一点维护。:-)
推荐阅读
- python - glDrawArrays 的问题
- html - 如何在导航栏中输入下拉项
- java - 使用外部 jar 和多个参数从 python 执行 java 类
- angular - 如何在 Angular Material 中设置 Dropdwnlist 值
- python - if not: 和 if False 之间的区别:
- sql-server - SQL Server 添加变量
- c# - 为 widget.RecyclerView 更改 RecyclerView MvvmCross
- batch-file - 不支持 UNC 路径
- android - Xamarin Forms Android JSON.net 序列化
- java - Java new BigDecimal 生成另一个数字