处理来自Web API的NotFound响应

时间:2018-02-13 21:27:43

标签: asp.net .net rest asp.net-web-api

我的一个ASP.NET Web API项目有这样的代码:

public HttpResponseMessage GetStatusById(int sid)
{
    try
    {
        var mds = TheRepository.GetStatusById(sid);
        if (mds != null)
        {
            return Request.CreateResponse(HttpStatusCode.OK, TheModelFactory.Create(mds));
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.NotFound);
        }
    }
    catch (Exception ex)
    {
        return Request.CreateResponse(HttpStatusCode.BadRequest, ex);
    }
}

在同一个解决方案中,但在我编写客户端(ASP.Net网站)的另一个项目中,它将通过此​​WebAPI读取和写入数据。

首先,客户端应检查数据库中是否已存在记录:

public async Task<ActionResult> Create([Bind(Include = "id,description")] MDS mds)
{
    if (mds == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No data given to server");
    }
    else
    {
        MDS reqMds = await _mdApiService.GetMDS ByStatus(Convert.ToInt32(mds.Id));                    

        if (reqMds == null )
        {
            await _mdApiService.CreateMDS(mds);
        }
        else
        {
            return new HttpStatusCodeResult(HttpStatusCode.Conflict, "Already exists");
        }
    }
    return View("Details", mds);
}

当我调用此方法时,我在浏览器中获取NotFound-Page而不是获取响应客户端(网站)并解析它。 目标是显示来自WebSite Project的错误,而不是来自Web API项目。

通过Web API检查客户端已存在的记录的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我决定编辑我的服务器Web API以检查重复条目。在客户端上仅将操作从用户传输到API。