27.08.2013

JSONP Formatter для Web API

Для того, чтобы Web API отдавал данные в формате JSONP, необходимо:

1) установить package, прописав в Package Manager Console такую команду:
 Install-Package WebApiContrib.Formatting.Jsonp

2) в папку проекта App_Start добавить файл, содержащий следующий код:
public class FormatterConfig
    {
        public static void RegisterFormatters(MediaTypeFormatterCollection formatters)
        {
            var jsonFormatter = formatters.JsonFormatter;
            jsonFormatter.SerializerSettings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };
 
            // Insert the JSONP formatter in front of the standard JSON formatter.
            var jsonpFormatter = new JsonpMediaTypeFormatter(formatters.JsonFormatter);
            formatters.Insert(0, jsonpFormatter);
        }
    }

SerializerSettings  здесь исключительно для того, что задать правила именования свойств, поэтому по сути достаточно последних двух строк

3) зарегистрировать наш новый форматтер в Global.asax, добавив в метод Application.Start следующую строку: 

FormatterConfig.RegisterFormatters(GlobalConfiguration.Configuration.Formatters);


Предварительно необходимо, чтоб Web API был настроен на передачу JSON.
Для этого в WebApi.Register необходимо добавить две строки:


config.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
config.Formatters.Add(GlobalConfiguration.Configuration.Formatters.JsonFormatter);

Комментариев нет:

Отправить комментарий