一個網友遇到的問題, 最近上課也遇到不過沒半個人講對 LOL
在舊版的 .net web api
如果用 chrome
去呼叫 api
的話, 預設會送你 xml
因為年代久遠以前都是直接移除, 在 Application_Start
裡面補 GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
即可
如果是 WebApiConfig
則這樣移除, 這下 chrome
一定收到 json
1 | public static class WebApiConfig |
可是搞笑的來了, 如果不移除的話, 用 HttpClient
去打 api 預設竟然會是 json
追查下去才發現預設 HttpClient
header
的 content-type
也是沒帶 json
那為何是撈到 json
呢, 其實舊版的 web api 預設順序是 json
然後才是 xml
只要用以下這樣來調整順序測就會得到 xml
1 | config.Formatters.Clear(); |
那 chrome
為何預設會是拿 xml
呢? 他 header
也沒帶 content-type
阿
其實秘密就在 chrome
的 accept
這句裡面, 他優先拿 xml 然後很後面才拿 */*
1 | accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 |