跨语言界面 - 它们是否存在?

时间:2017-11-30 12:49:50

标签: javascript php interface

我想知道,我现在修复了较旧的Web应用程序,而且我经常偶然发现同样的问题,我无法找到解决方案。

Javascript应用程序通常从其他来源获取数据。在我的情况下,它的PHP。那些Javascript应用程序期望以某种方式提供给他们的数据,如果他们不以特定方式获取数据,则会发生错误并且应用程序会中断。

这可能很难调试,因为如果有人决定编辑php函数,例如提供该数据,他们通常不会从现代IDE获得任何提示,数据可能以错误的方式返回。

有没有办法在php和javascript之间建立一个接口,以便它们都需要遵守它?就像一个php界面。

我也知道当你使用typescript时,你可以为javascript应用程序创建一个接口。然后你可以为php创建相同类型的界面。

2 个答案:

答案 0 :(得分:1)

正如其他人所暗示的那样,您在这里寻找的是架构,它指定了输入和输出的格式;以及更广泛的合同,以URL,方法名称等形式指定操作

对于XML,很可能使用XML Schema或RelaxNG指定模式;对于JSON,有JSON Schema和其他可能的。

更广泛的合同会因API的风格而有很大差异。 WSDL文件通常用于定义SOAP API(这只是XML-over-HTTP的特定约定),Swagger和OpenAPI等工具可以指定REST样式的API,通常使用JSON。

然后,所有这些都可以被提供给工具,这些工具可以自动生成您的实现符合其合同的测试,以及文档等。这些测试和文档实际上是您的目标:对于具有大量AJAX调用的遗留网站不要形成一个连贯的API,最好的起点可能是一系列单元测试,可以确认相同的输入在您进行更改后提供相同的输出。

答案 1 :(得分:0)

唯一想到的是SOAP,其中WSDL Document提供有关SOAP函数(包括参数和数据类型)及其响应的信息。它是众所周知的,因为它是XML格式,它与语言无关。

我不知道IDE是如何支持的,但标准已经存在了一段时间(至少从2001开始)所以我认为应该有一些可用的插件可以让你的生活更轻松。< / p>

如果您可以控制服务器,也许您可​​以在Node上运行PHP应用程序,这样您的Javascript / Typescript应用程序就可以直接与Node服务器通信并使用Typescript类型定义。但我猜这不是一个选择:)