IHttpActionResult返回标准

时间:2018-10-18 14:27:16

标签: c# http asp.net-web-api

我有一个简单的Web API,该API从XML文件读取数据并将其作为JSON对象返回。

如果找到并正确读取了XML文件,我返回Ok(jsonObject),这在我看来很好。 但是 ,如果发生异常,我应该与异常消息一起返回什么?

public IHttpActionResult Get(string timestamp)
{

    try
    {
        //Read XML
        XDocument xDoc = XDocument.Load(@"D:\myfile.xml");

        //Convert XML data into JSON string
        string jsonStr = JsonConvert.SerializeXNode(xDoc);
        JObject json = JObject.Parse(jsonStr);

        return Ok(json);
    }
    catch (Exception ex)
    {
        return Ok(ex.Message.ToString()); 
        //return NotFound(); //I CANNOT RETURN EXCEPTION MESSAGE WITH NotFound()
    }

}

更新:上面是示例代码,但是在我的实际代码中,读取了多个XML文件。除了读取操作之外,还有一些XML操作,因此我真的很想知道异常的原因。

1 个答案:

答案 0 :(得分:0)

这取决于例外情况以及您希望在响应中提供多少信息。如果是无法找到XML文件的情况,我会说返回NotFound()结果而没有任何类型的消息就足够了。这将返回404-Not Found HTTP响应,指示未找到所请求的资源。

如果可能还会弹出其他一些异常,则500响应可能就足够了。这将允许您返回异常消息和堆栈跟踪,但是请记住,在非开发环境中运行时,通常会省略响应内容(出于充分的理由)。您不想向API使用者提供太多有关服务器内部运行情况的信息。

总的来说,我想读一下HTTP状态代码,并确定最适合您要处理的方案的状态代码。 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes