c# - REST API 响应

标签 c# rest model-view-controller

给定此代码,C# REST API 的入口,

protected HttpResponseMessage ProcessRequest()
{
    HttpResponseMessage _response = null;
    try
    {
        //request is processed.
        object _obj = ExecuteEvent();

        //response object is created with success status and response content is assigned in the required mediatype format.
        _response = Request.CreateResponse(HttpStatusCode.OK, Constants.ServiceConstants.VALUE);
        _response.Content = new StringContent(System.Web.Helpers.Json.Encode(_obj), Encoding.UTF8, Constants.ServiceConstants.MEDIATYPE);
    }
    catch
    {
    }
    return _response;
}

为每个请求返回 200 响应并将内容设置为如上所述的序列化 JSON,这是处理此问题的正确方法还是错误方法?

我本以为我们绝对不应该为每个请求返回 200 OK。

此代码将在 ExecuteEvent 中抛出异常,假设用户未经授权,但是,我们实际上不应该告诉调用者他们的请求未经授权吗?

最佳答案

您应该根据方法中发生的事情发回 HTTP 状态。如果一切正常,您将发回 OK。如果失败,您应该发回相应的状态码。

例如,如果 ExecuteEvent 抛出一条消息表明用户未被授权,您将发回 HTTP 停留代码 Forbidden (a 403)。

可以看到微软所有的状态码here您可以获得数字列表及其含义 here .大多数情况下,这两个列表相互对应,只是组织方式稍有不同。

希望对您有所帮助。

关于c# - REST API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529376/

相关文章:

c# - 访问 Azure 辅助角色中托管的 ApiController 中的客户端证书

c# - 统一: GetPixels() always results in the colour black across whole image

c# - 使用 C# 驱动程序在 mongodb 中查找计算值最高的文档

rest - 将 Doctrine 与 REST API 结合使用

php - 重定向到子域的规则

c# - 用 AND 替换嵌套的 if 语句

java - REST 服务是否应该包含非 Servlet 内容?

java - 我们应该如何设计不同内部微服务之间的通信

java - 模型应该包含 id 吗?

model-view-controller - 数据传输对象可以/应该实现接口(interface)吗?