如果UI进行休息呼叫并且服务器停止,会发生什么情况?

时间:2019-03-24 09:19:40

标签: spring rest api single-page-application

假设UI正在调用Rest服务,并且服务器停止了。

  • UI是否了解服务器的状态?
  • UI是否从服务器返回任何响应?
  • 如果其余呼叫是POST或PUT,有什么区别?

2 个答案:

答案 0 :(得分:1)

客户端(可以是UI)和服务器是两个愚蠢的应用程序。他们会说并告诉他们。

因此,每当客户端尝试在套接字上调用服务器且没有服务器在监听该服务器时,就不会返回任何响应给客户端。客户可以用任何想要的方式来解释它。大多数浏览器显示<host> refused to connect.

但是,如果服务器正在侦听套接字,则无论采用哪种编程方式,服务器都会响应客户端。服务器发送适当的状态码,并期望客户端知道如何解释它。服务器可以发送它想要的任何随机数...捕获是,客户端必须知道如何解释它。否则,这只是单向通信。

为了提供流畅的客户端-服务器通信,RFC 2616的第10节定义了各种具有特定含义的代码,如下所示:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

对于所有类型的Http方法,这些状态代码都是相同的。

答案 1 :(得分:1)

停止REST Api后,UI /浏览器/客户端将显示“无法获得任何响应 不论请求类型为:PUT / POST,都存在与“错误”相关的错误。

回答您的问题:

UI是否了解服务器状态? 如果服务器停止,则将显示错误:连接服务器时出错。可以追溯到多个根本原因。其中之一可以是:服务器已停止。

在发生错误的情况下,可以使用各种错误代码将服务器的状态发送到客户端,例如: 500 Internal Server Error (500内部服务器错误),状态码为500,即“内部服务器错误”,表示服务器由于未知原因无法处理请求。这是REST APis的状态代码列表:https://www.w3.org/Protocols/HTTP/HTRESP.html

UI是否从服务器获得任何响应? 如果服务器已停止,则UI /客户端将不会收到任何响应。

如果其余呼叫是POST或PUT,有什么区别? 如果服务器已停止,则没有任何区别。

您可以使用浏览器并在本地计算机上运行任何应用程序/ REST服务来运行此方案。 (对于此测试,您不需要在本地运行任何REST应用程序,因为您只想测试何时停止)

例如,如果您的REST应用程序服务器已启动并且可以在端口8080上使用,则可以通过发送浏览器的请求来向该服务器发送请求:http://localhost:8080

要使用POST / PUT集合进行测试,可以使用任何API开发工具,例如:Postman。

让我们评估您的REST Api,公开以下网址:

/ myPostRequest POST / myPutRequest PUT

当您从POSTMAN中访问这些网址时,您会得到相同的响应:

POST http://localhost:8080/myPostRequest

无法得到任何回应 连接到http://localhost:8080/transition-order时出错。

输入http://localhost:8080/myPutRequest

无法得到任何回应 连接到http://localhost:8080/transition-order时出错。