2015-04-13 2 views
0

Предположим, у меня есть пользовательское расширение .foo, которое предполагает, что ожидаемый тип данных должен быть документом «JSON-esque». Например, допустим, у меня есть 2 форматирования, которые могут поддерживать JSON, стандартный JSON.Net и настраиваемый форматировщик JSON, который делает кокетство в документе JSON. Я только хочу, чтобы использовать второй JSON форматировщик для очень специфических вызовов API, и я могу изменить апи конечную точку в клиенте, так что я хочу сделать что-то вроде этого:WebApi: установить форматтер с помощью строки пользовательского формата

[Route("~/api/Widgets/{id:int}.{format}")] 
[ResponseType(typeof(Widget))] 
public async Task<HttpResponseMessage> GetWidget(int id) 
{ 
    //stuff goes here 
} 

как таковой, перейдя

https://myserver.com/api/Widgets/1234.foo 

... отформатировать ответ с моим "специальным" форматировщиком для виджета 1234, но

https://myserver.com/api/Widgets/1234.json 

... должен вернуть стандартный формат JSON документ.

Как указать, что мой пользовательский форматировщик запускается только тогда, когда идентификатор format является «foo»? Что делать, если мне нужно поддерживать форматы «foo» и «bar» с одним и тем же форматированием?

Я хотел бы отметить, что я хорошо знаю, что это кажется глупым делом, возвращая существенно искаженный документ JSON. (Пытаясь отрезать «альтернативу» или «наилучшей практики» ответы проводы в проход ...)

ответ

0

Я думаю, этот вопрос охватывает именно то, что вам нужно: используются

Return either xml or json from MVC web api based on request

JSON/XML форматтеры там, однако, он работает точно так же с пользовательскими форматировщиками.