使用自定义IHttpActionResult

时间:2017-01-07 04:11:08

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

我正在为我的REST API使用自定义IHttpActionResult。它运行良好,但我不确定我应该如何检查并返回不同的内容类型(json,xml等)。这就是我目前正在做的事情

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        HttpResponseMessage response;

        // Get our output format
        string acceptHeader = _request.Headers.GetValues("Accept").FirstOrDefault();

        // Create and build response
        response = new HttpResponseMessage(_statusCode)
        {
            Content = new ObjectContent(_content.GetType(), _content, getContentType(acceptHeader))
        };

        // Return message
        return Task.FromResult(response);
    }

    private MediaTypeFormatter getContentType(string header)
    {
        if (header.ToLower() == "application/xml")
        {
            return new XmlMediaTypeFormatter();
        }
        else
        {
            return new JsonMediaTypeFormatter();
        }
    }

我使用Accept:application / json通过请求传递不同的内容类型,例如。这是在ExecuteAsync方法中传递标头的可接受方式吗?我担心的是,我最终会让这个方法做太多的工作,这可能会导致代码混乱或设计不良。

0 个答案:

没有答案