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, однако он работает так же, как и с пользовательскими форматерами.