WebApi: установить форматер с пользовательской строкой формата

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

[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

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

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

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

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

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

1 ответ

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

Вернуть xml или json из веб-API MVC на основе запроса

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

Другие вопросы по тегам