Предлагаемый шаблон для определения типа ответа REST в WCF - PullRequest
0 голосов
/ 19 марта 2012

Мы пытаемся определить тип запроса, отправляемого нашему сервису, чтобы мы могли вернуть данные в правильном формате. Приведенный ниже код работает отлично, за исключением того, что мы не хотим помещать его в метод «Get» каждого создаваемого нами сервиса. Может ли кто-нибудь предложить какие-либо предложения относительно того, как мы могли бы реализовать какой-либо базовый класс или точку расширения, чтобы нам не приходилось копировать и вставлять этот фрагмент везде?

        [WebGet(UriTemplate = "Case/{id}")]
    public SampleItem Get(string id)
    {
        string formatQueryStringValue = WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["format"];
        if (!string.IsNullOrEmpty(formatQueryStringValue))
        {
            if (formatQueryStringValue.Equals("xml", System.StringComparison.OrdinalIgnoreCase))
            {
                WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Xml;
            }
            else if (formatQueryStringValue.Equals("json", System.StringComparison.OrdinalIgnoreCase))
            {
                WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
            }
            else
            {
                throw new WebFaultException<string>(string.Format("Unsupported format '{0}'", formatQueryStringValue), HttpStatusCode.BadRequest);
            }
        }

        return new SampleItem() { StringValue = "test" };
    }

1 Ответ

0 голосов
/ 20 марта 2012

Я хочу, чтобы потребитель мог указать свой формат с помощью параметра строки запроса 'format'

Вы можете использовать обработчик сообщений для просмотра строки запроса и добавления подтверждения.заголовок, чтобы остальная часть обработки работала.В следующем посте заголовки меняются.Я также видел несколько демонстраций этого в Интернете, и они все еще могут быть частью образца контактов

http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...