日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

(四)Asp.net web api中的坑-【api的返回值】

發(fā)布時間:2023/11/27 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (四)Asp.net web api中的坑-【api的返回值】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
(四)Asp.net web api中的坑-【api的返回值】 原文:(四)Asp.net web api中的坑-【api的返回值】

  • void無返回值
  • IHttpActionResult
  • HttpResponseMessage
  • 自定義類型

我這里并不想贅述這些返回類型,

可以參考博文http://blog.csdn.net/leonken88/article/details/53063693

和大神的http://www.cnblogs.com/landeanfen/p/5501487.html

我要說我遇到的坑是,

public HttpResponseMessage DataHandler(RequestModel model)
{

不管是result = JsonConvert.SerializeObject(data);

return result,

return json<string>(result),

或者return Ok(result)

別人調用我的接口都是一個json字符串格式,”{\“name\”:\”123\”}”

}

以我想呢,既然你能收到這種字符串,自己反序列化下就ok了嘛,最后另外那邊告訴我,他們的開發(fā)語言是c++,且這個http請求都是封裝好的組件,類似dll那種只能調用,他們要求返回json,必須是{“name”:”123”},無轉義,無雙引號

這可難辦,我試了好多種方式,每次都是返回帶轉義字符的json字符串,無奈多方查閱

[HttpPost]
public HttpResponseMessage DataHandler(RequestModel model)
{

???? string result=”{\“name\”:\”123\”}”;

???? return new HttpResponseMessage { Content = new StringContent(result, System.Text.Encoding.UTF8, "text/plain") };

}

這就對了,為什么呢?

原來是自己對http協(xié)議的學習不精,

1、 服務端需要返回一段普通文本給客戶端,Content-Type="text/plain"
2 、服務端需要返回一段HTML代碼給客戶端 ,Content-Type="text/html"
3 、服務端需要返回一段XML代碼給客戶端 ,Content-Type="text/xml"
4 、服務端需要返回一段javascript代碼給客戶端,text/javascript
5 、服務端需要返回一段json串給客戶端,application/Json

ASP.NET WebAPI是一套RESTful API開發(fā)框架。會自動序列化返回的對象成XML或JSON,其序列化后的格式取決于Request的header中的Accept。常見的有:

  • application/json
  • application/xml
  • text/json
  • text/xml(這兩種已經(jīng)被廢棄了)

如果不指定的話默認返回的Content-Type是:application/json; charset=utf-8

要想http response 返回指定格式,

方法一:放棄自動序列化,返回httpResponseMessage,再手動設置

代碼如下:

HttpResponseMessage resp = new HttpResponseMessage();

string result=”{\“name\”:\”123\”}”;

resp.Content = new StringContent(result, System.Text.Encoding.UTF8, ""text/plain");

方法二:設置httpConfiguration

但是這種方法有個弊端,是全局的,但是應該可以限定范圍,暫時先不管了。

P.S.吐槽下,IE默認是不顯示JSON的,會直接下載下來,所以開發(fā)人員工具就捕獲不到HTTP報文,也沒法看Header。

更多詳情,請參考http://www.luckyonecn.com/blog/fix_content-type_to_Applicationjson_in_WebApi/

?

【知識點】http請求,不僅僅request中的content-type需要指定,response中的content-type也需要指定,客戶端需要告訴服務端,我給你的是什么樣的數(shù)據(jù),content-type,服務端處理邏輯,返回給客戶端,也需要告訴客戶端,我給你是什么樣的數(shù)據(jù),content-type,雙方按約定好的方式,進行通訊,才能確保整個http請求準確無誤的進行。

posted on 2019-07-03 17:10 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/11127663.html

總結

以上是生活随笔為你收集整理的(四)Asp.net web api中的坑-【api的返回值】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。