學習筆記03 資源塑性

2022-03-03 14:25:28 字數 2120 閱讀 1282

屬性比較多,而我們只需要其中一部分屬性使用資源塑形.可以提公升效能

三個方面:集合資源 單個資源 異常處理.

常規:在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。這個特性實際上是非常冷門的乙個特性,實際運用中也比較少見,不過在這裡,我大量的使用了單例型別,依靠不同的單例型別的不同方法簽名進行方法過載,產生不同的動作。這種依靠過載的設計模式...