在使用web api
的時候,有時候只想返回
json
;實現這一功能有多種方法,本文提供兩種方式,一種傳統的,一種作者認為是正確的方法。
json in web api –
只支援json
最普遍的做法是:首先清除其他所有的
formatters
,然後只保留
jsonmediatypeformatter。
有了httpconfiguration
的例項,你將會很簡單的清除所有
formatters
,然後重新新增
jsonmediatypeformatter。
實現**如下:
configuration.formatters.clear();這種方式雖然可以實現功能,但是所有的conent negotiation還是會發生,這就會產生以下額外的開銷了。因為,你已經知道要返回的結果了,也只想返回configuration.formatters.add(
new jsonmediatypeformatter());
json
,其他的
content negotiation
都不需要了。
下面的方法可以很好的解決這個問題。
json in web api –
最好的方法是使用自定義的只返回json result的
content negotiation
代替web api
中預設的
content negotiation。
conneg通過實現icontentnegotiator的
negotiator
方法實現擴充套件。
negotiator
方法返回
contentnegotiationresult
(它包裝了你選擇的
headers
和formatter)。
下面的方法通過傳遞乙個jsonmediatypeformatter
給自定義的
conneg negotiator
,讓它一直返回
的content-type
以及jsonmediatypeformatter
。這種方法避免了每次請求都要重新建立一次
formatter。
**如下:
}接下來,你需要在httpconfiguration例項上註冊你的新的實現機制:
var jsonformatter = new通過替換預設的defaultcontentnegotiator,我們使用我們自定義的jsonmediatypeformatter();
//optional: set serializer settings here
config.services.replace(typeof(icontentnegotiator), new jsoncontentnegotiator(jsonformatter));
jsoncontentnegotiator
,它只支援
json
,而且可以馬上返回。
如果你想更深入的了解content negotiation
的知識,你可以檢視作者的這篇文章。 總結
通過使用自定義的jsoncontentnegotiator
替換系統預設的
defaultcontentnegotiator
,很好的實現
web api
只返回json
的功能,而且沒有額外的開銷。
作者對content negotiation
的講解:
WebAPI 返回JSON資料
public static class webapiconfig defaults new 在全域性設定中,使用自定義的只返回json result。只讓api介面中替換xml,返回json。這種方法的效能是最高的!json.net 利用contractresolver解決命名不一致問題 解決問題 ...
WebApi返回Json格式
public class 但有個不好的地方,如果返回的結果是string型別,如aaa,返回的json就會變成 aaa namespace testwebapi endregion region 2 webapi 返回json,推薦做法效能最高 config.services.replace typ...
美化WebApi,使其統一返回Json格式
部落格部分 來自其他博主,暫時找不到你的博文連線,如果您覺得我的 中引入了您的 或者文章,可在下方把您的部落格文章寫在下面,謝謝!webapi有兩種返回資料格式,一種是xml,一種是json,在webapi中,你可以選擇你自己喜歡的返回資料格式,在這裡,我基本都是返回的是json,基本上,使用web...