屬性比較多,而我們只需要其中一部分屬性使用資源塑形.可以提公升效能
三個方面:集合資源 單個資源 異常處理.
常規:在infrastructure專案 extensions目錄建立 enumerableextensions.cs(集合) objectextensions(單個)數的處理.
a.集合資源整形
修改:postcontroller.cs
在新增處理 postresources 的方法
var result =postresources.todynamicienumerable(postparameters.fields);
並將原來返回
return
ok(postresources);
改為return ok(result);
然後測試:
結果為 ,
,修改url
結果為:,,
b.單個資源整形
1.http接收整形引數,預設為空
原來public
async taskget(int
id)改為
public
async taskget(int id,string fields=null)2
.對resource結果進行整形
原來增加:
var shapedpostresource =postresource.todynamic(fields);
3.返回結果處理
原來return
ok(postresource);
改為:return ok(shapedpostresource);
測試原結果不寫了,調整後結果為:
上面,id等字段的首字母變成了大寫.處理成小寫的辦法如下
在startup的 addmvc後面修改原來: services.addmvc();
改為: services.addmvc()
.addjsonoptions(options =>);
如果url傳的fields引數在resourcemodel並不存在.這個處理辦法如下.在services下增加2個檔案.itypehelperservice.cs 和typehelperservice.cs
1.然後在startup.cs註冊這個service
//註冊資源塑性 fields不存在的情況的處理方法
services.addtransient();
2.在postcontroller.cs使用
1.首先注入
itypehelperservice typehelperservice
2.在get方法一開始就進行判斷
if (!_typehelperservice.typehasproperties(postparameters.fields))
單個資源的情況
if (!_typehelperservice.typehasproperties(fields))
測試:https://localhost:5001/api/posts?fields=id,sdf
sdf 這個屬性就不存在,會提示相關資訊.
補充:昨天遺漏的今天補充
排序的時間,postresource 和post的對映,也可能出現問題.(不存在或不可排序),進行類似的判斷,
演算法筆記學習筆記03
2.6 函式 問題 a 習題7 5 字串逆序存放 include includevoid change char a,char b b len 0 int main 問題 b 習題7 7 複製字串中的母音字母 include includevoid select char a,char b b j ...
AspectJ學習筆記 03
方面 方面的定義如下 access specification aspect extends class or aspect name implements inte ce list pointcut 關鍵字aspect申明了乙個方面。每乙個方面都有乙個名字,程式中其他部分可以使用該名字來訪問該方面...
JavaFX學習筆記(03)
現在我先來講一點知識吧 在scala裡,每乙個單例物件a都存在乙個單例型別a.type,這個型別只有兩個值 a和null。這個特性實際上是非常冷門的乙個特性,實際運用中也比較少見,不過在這裡,我大量的使用了單例型別,依靠不同的單例型別的不同方法簽名進行方法過載,產生不同的動作。這種依靠過載的設計模式...