【问题标题】:Servlet API versus REST APIServlet API 与 REST API
【发布时间】:2013-02-19 14:47:42
【问题描述】:

我正在使用提供两种 API 的 CRM 系统:servlet API 和 REST API,这两种 API 都通过 HTTP。

我曾经通过调用 REST URL 并处理返回的 JSON 或 XML 来与我的 ASP.NET MVC Web 应用程序中的 REST API 集成。但是我不知道 servlet API 是什么意思,这些 API 可以从我的 ASP.NET MVC 应用程序通过 Web 调用,还是应该在 Java 应用程序中调用这些 API?

对不起,如果我的问题对某人来说似乎微不足道。

【问题讨论】:

  • 如果我们知道它是哪个 CRM 系统,我们可以阅读文档并尝试理解。但是一个servlet API 确实不是很清楚。它使用 servlet 实现的事实是无关紧要的。重要的是用于调用它的协议、它接受什么作为参数、如何以及它返回什么。
  • 解决方案是“ManageEngine Service DeskPlus”8.1版。
  • 阅读本页文档。两种API的区别和特点都解释清楚了:manageengine.com/products/service-desk/help/adminguide/…
  • 所以他们提到servlet API是外部应用程序基于表单的输入提交,这是否意味着我不能从asp.net表单调用servlet API..我不确定是否是这样吗?
  • 你为什么不能呢?只要您向适当的 URL 发送请求,并使用适当的方法和参数,一切都会好起来的。 HTTP 请求是 HTTP 请求。 CRM 不关心您是使用 asp.net、Java、perl 还是 COBOL 来发送请求。

标签: rest servlets


【解决方案1】:

Java Servlet API 是指一组用于实现服务器端程序的类。主要玩家是the Servlet

servlet 是在 Web 服务器中运行的小型 Java 程序。 Servlet 接收和响应来自 Web 客户端的请求,通常通过 HTTP,即超文本传输​​协议。

如果你想要一个非常简单的类比,Servlet 就是 Java 版本的 CGI(通用网关接口)。

REST API 是一种通过充分利用 Web 架构来构建应用程序的方法。抛开 REST 的所有细节并大大简化,它基本上是一个 HTTP API。

如果你想构建一个 HTTP API,你可以使用 Servlet。因此,您也可以使用 servlet 构建 REST API,尽管有更好的替代方案(例如JAX-RS),因为 servlet 是一个“低级”组件,没有什么可以保护您免受您需要编写的所有样板代码的影响。

您当然可以从其他客户端(例如,从 ASP.NET MVC)调用基于 Servlet API 构建的 Java 应用程序。这就是它的目的。出于这个原因,我真的不明白你的 CRM 系统究竟意味着什么 Servlet API 和(一个单独的!?) REST API...所以也许问问 CRM 提供商?

编辑:根据我对 ManageEngine ServicedeskPlus API 的了解,我认为这只是提供商选择的一个不幸的名称。

正如我在 cmets 中提到的,当您说 REST API 时,您已经从一开始就提供了一些信息。大多数人在被告知 REST 时都明白您有一些抽象资源,这些资源可以有多种表示形式(JSON、XML 等等),每个资源都由一个 URI 标识,/customers 指的是客户列表资源,/customers/1 是客户,/customers/2 是另一个客户,您使用 GET /customers/1 查找有关客户的详细信息,并使用 DELETE /customers/1 删除它等。

REST 是与应用程序交互的一种方式,另一种是公开可由客户端调用的操作,例如 SOAP 正在执行的操作。在 REST 成为镇上的新生事物之前,人们使用 SOAP 做事。与访问资源不同,SOAP 专注于访问操作。当您向某人提及 SOAP 时,她知道它是一种可以使用 HTTP 的 POST 来传输消息的协议,每条消息都有一个 XML 有效负载,其中包含要调用的操作名称和调用所需的参数等。

但即使在 SOAP 和 REST 广为人知之前,人们就意识到他们可以使用表单提交通过 HTTP 潜入 RPC 调用。基于 HTTP 表单的提交是 ManageEngine Service DeskPlus 中 API 的方法之一。但是基于表单的提交方法(据我所知)没有像 SOAP 或 REST 这样的酷名称……所以也许这就是它以 Servlet API 命名的原因?! (我再次强调,这只是服务器实现,在 HTTP 协议的上下文中并不重要)。

因此得出结论:是的,您可以从 ASP.NET 调用 ManageEngine ServicedeskPlus Servlet API,甚至是 Web 浏览器或任何类型的支持 HTTP 的客户端。

【讨论】:

  • 感谢回复,那么Servlet API是REST API的一种,我也有同样的疑问,为什么有两种API??
  • @John Peter:它是一个 Servlet API 的事实是无关紧要的(这只是实现)。协议是重要的部分,那就是 HTTP。 REST 也(主要)通过 HTTP 实现,所以我不明白为什么有两个 HTTP API。 REST API 有一些规则:你使用所有的 HTTP 动词(GET、POST、PUT,...),你有所有资源的标识符,它是无状态的等等。如果你说 Servlet API,你不会传达任何其他东西它接受请求并提供响应。重要的是这些请求和响应中的内容!它可能是 RPC 的一种形式...
  • ... 您使用 GET 在服务器上调用一些操作,然后使用 POST 更改它(类似于传统形式的 SOAP)。它可以是任何东西!正如@JB Nizet 提到的,如果我们知道它是哪个 CRM 系统,我们可以阅读文档并尝试理解……那么它是哪个 CRM?如果它是专有的,那么请询问提供商为什么要使用这两个 API,或者可能会在您的问题中添加更多详细信息...
  • 解决方案是“ManageEngine Service DeskPlus”8.1版。
猜你喜欢
  • 1970-01-01
  • 2019-08-24
  • 2011-08-23
  • 2013-11-29
  • 2020-11-14
  • 2018-10-27
  • 2018-03-10
  • 2016-12-20
  • 2017-06-06
相关资源
最近更新 更多