ASP.NET Web API faz negociação de conteúdo por padrão - retornará XML ou JSON ou outro tipo com base no Accept
cabeçalho. Eu não preciso / quero isso, há uma maneira (como um atributo ou algo assim) para dizer à API Web para sempre retornar JSON?
asp.net-mvc
asp.net-web-api
Borek Bernard
fonte
fonte
GlobalConfiguration.Configuration.Formatters
Respostas:
Compatível apenas com JSON na API da Web ASP.NET - A MANEIRA CORRETA
Substitua IContentNegotiator por JsonContentNegotiator:
Implementação JsonContentNegotiator:
fonte
Accept
XML obterá JSON e não 406 ?Accept
cabeçalho.GlobalConfiguration...Clear()
realmente funciona.Limpe todos os formatadores e adicione o formatador Json de volta.
EDITAR
Eu adicionei para
Global.asax
dentroApplication_Start()
.fonte
Philip W teve a resposta certa, mas para maior clareza e uma solução de trabalho completa, edite seu arquivo Global.asax.cs para ficar assim: (Observe que tive que adicionar a referência System.Net.Http.Formatting ao arquivo gerado no estoque)
fonte
Isso limpa o formatador XML e, portanto, padroniza para o formato JSON.
fonte
Inspirado pela excelente resposta de Dmitry Pavlov, eu alterei um pouco para que pudesse inserir qualquer formatador que desejasse aplicar.
Crédito para Dmitry.
fonte
Se você quiser fazer isso apenas para um método, declare seu método como retornando em
HttpResponseMessage
vez deIEnumerable<Whatever>
e faça:este código é uma dor para o teste de unidade, mas também é possível assim:
fonte
Este tem cabeçalhos corretos definidos. Parece um pouco mais elegante.
fonte
Você pode usar em WebApiConfig.cs:
fonte
para aqueles que usam OWIN
torna-se (em Startup.cs):
fonte