webapi 可空引數

2022-01-14 06:51:24 字數 1160 閱讀 6244

這裡上面是乙個可空引數的例子。請不要寫成  

public wapoutgoingresponse> gettaskpatrolhistory(string user, datetime? start, datetime? end , int? count, int? since )

一開始我是這麼寫的,但是在呼叫的時候發現

這麼呼叫是找不到 這個路由的,只有

這個位址才能正確呼叫。一開始沒有想明白,後來在網上查詢一下資源發現需要這麼寫

datetime? start = null

為什麼原來的 datetime? start  不行?「使用了沒有初始化預設值的變數」 ,這就說明當我們想使用乙個可空引數的時候不僅是 在型別後面加上?,還需要給它乙個預設值。

其實還有另乙個方法;  就是 [fromuri],使用這個配合物件實體做引數,會自動從url中解析對應的資料,如果不存在屬性則是預設值。

在宣告實體的時候我們仍可以如下:

我們可以從這裡看出來如果是 datetime?  那麼他的值是 null  ,而 datetime  型別的則是 default(datetime),

這裡也可以看出,進行了初始化。實際操作中可根據需要選擇即可。

這裡建議自己測試一下這三種,主要看的是請求位址url的區別

webapi引數物件為空的的處理

最近做乙個小即時通訊程式,考慮到服務資源和實際使用情況,使用的心跳包實現,結果測試時,發現傳送訊息到webapi後,訊息物件始終為空,仔細檢查了各個環節,所有問題都排查了一遍,還是沒有接收到提交的訊息資料。後來反覆試驗之後,發現了問題 原來接收物件裡的屬性全都是不可空的,而整形 guid型別的屬性,...

WebApi 空專案建立WebApi工程步驟

1 新建空的asp.net應用程式 3 在工程下面建controller和models資料夾 4 在models資料夾下面新建類 storage using system using system.collections.generic using system.linq using system....

WebApi引數傳遞總結

在webapi中,請求主體 httpcontent 只能被讀取一次,不被快取,只能向前讀取的流。舉例子說明 服務端方法 void action int id,string name 所有引數都是簡單型別,因而都將來自url 服務端方法 void action fromuri int id,fromu...