C# 检查API是否处于活动状态,它是Get方法还是Post方法?

C# 检查API是否处于活动状态,它是Get方法还是Post方法?,c#,api,web-services,asp.net-web-api,C#,Api,Web Services,Asp.net Web Api,我对API世界有点陌生。在调用任何服务方法之前,我需要检查服务在客户端是否处于活动状态。它可以在客户端通过传递API URL和获取请求状态来完成。但出于其他原因,我需要在API中添加一个虚拟方法,该方法只返回状态代码。所以从我的客户端,我只需要打电话检查服务状态 1) 我需要一个Get或Post方法吗?我不会传递任何参数。 2) 可以只返回字符串还是使用返回类型为httpresponsemessage的方法更好 public string GetStatus() { /

我对API世界有点陌生。在调用任何服务方法之前,我需要检查服务在客户端是否处于活动状态。它可以在客户端通过传递API URL和获取请求状态来完成。但出于其他原因,我需要在API中添加一个虚拟方法,该方法只返回状态代码。所以从我的客户端,我只需要打电话检查服务状态

1) 我需要一个Get或Post方法吗?我不会传递任何参数。 2) 可以只返回字符串还是使用返回类型为httpresponsemessage的方法更好

 public string GetStatus()
    {
        //validate ip address

        return HttpStatusCode.OK.ToString();
    }
1) 我需要一个Get或Post方法吗?我不会通过任何考试 参数

你可以随意使用它们中的任何一种,真的没关系

2) 只返回字符串可以吗?或者最好使用 返回类型httprequestmessage

请不要这样做。最好返回HttpStatus 200(OK)


用头怎么样。如果您需要在一定的时间间隔内从客户端发送一些数据,以便服务器知道客户端是否处于活动状态,那么您可以使用POST,例如/heartbeat或/sample等,但如果您只想检查服务器的运行状况。你也可以用Head

根据:

HEAD方法与GET相同,只是服务器不能 在响应中返回消息正文。包含的元信息 在HTTP中,响应头请求的头应该相同 响应GET请求而发送的信息。这种方法可以 用于获取由 请求而不传输实体体本身。这种方法是可行的 通常用于测试超文本链接的有效性、可访问性、, 以及最近的修改

对HEAD请求的响应可能是可缓存的,即 响应中包含的信息可用于更新 以前从该资源缓存的实体。如果新字段的值 指示缓存的实体与当前实体不同(如下所示) 将通过内容长度、内容MD5、ETag或 最后修改),则缓存必须将缓存项视为过时

编辑 如果不想返回空结果,也可以使用GET,在这种情况下,可以返回当前日期时间

[RoutePrefix("ping")]
public class PingController: ApiController {

 [HttpGet]
 [Route("")]
 public IHttpActionResult Get() {
   return Ok(DateTime.UtcNow)
 }

}

没有数据不会在间隔时间内发送,然后您可以使用HEAD。使用GET也没有害处。如果不想发送空响应,您可以使用ping端点,该端点可以是HttpGet并从该操作返回当前日期时间。抱歉,我的意思是httpresponsemessageI必须使用HttpResponseMessage而不是ihttppactionresult,因为客户端.net版本。返回字符串有什么问题?它将简单地返回所有必需的状态200。
[RoutePrefix("ping")]
public class PingController: ApiController {

 [HttpGet]
 [Route("")]
 public IHttpActionResult Get() {
   return Ok(DateTime.UtcNow)
 }

}