1. 程式人生 > 實用技巧 >GraphQl in ASP.NET Core

GraphQl in ASP.NET Core

GraphQl in ASP.NET Core

https://graphql.cn/

https://graphql-dotnet.github.io/docs/getting-started/arguments/

1. GraphQl的簡介

2.Shecmas and Types(資料型別 對比 .NET介紹)

3.使用: Query(查詢) & Mutation(增加 修改 刪除)& Subscriptions(訂閱)(專案演示)

4.使用ASP.NET Core 構建GraphQl.Server (專案演示)

5.Postman Ajax 以及 Vue的呼叫演示

1.什麼是GraphQl?

通常也會被稱作是 ”宣告式查詢語言”

GraphQl 和 REST 比較

RESTful的一些不足 1.就是過度提取或提取不足 2.某個前端的實現需要多個獨立的RESTful api才能獲取足夠的資訊

GraphQL的一些優點 1.GraphQL最小化了需要網路傳輸的資料量(所輸即所得)。

2.使用GraphQL每個客戶機都可以精確地訪問它需要的資料。

3.程式碼即文件

4.引數型別強檢驗(確保安全)

5.統一入口 也就沒了 APi後臺介面版本迭代的的問題。(也是沒了 Api for V1....V2...V3.....)

GraphQL還是存在一些缺點的(比如 快取方面就沒有 RESTful優勢) GraphQL作為RESTful的一種輔助工具,尤其是針對前端App在複雜頁面,

本來要呼叫有上下文關係的多次RESTful請求時,採用GraphQL,只需要一次請求,就可以拿回所需的全部資料,還是可以起到非常好的效果,

大大提升App的效能。

2.GraphQl例子

演示地址:https://developer.github.com/v4/explorer/

1.多個查詢

2.巢狀查詢演示

query { 
  viewer { 
    login
    repositories(last:1){
      edges{
        node{
          id
          name
        }
      }
    }
  }
}

  

2.1說明查詢是可以巢狀的,一次請求,獲取多個 型別資料,無需繼續鑽取資料

2.2同時客戶端也不會收到,不需要資料的影響

GraphQl設計原則

1. 層次結構性(可以分層,巢狀查詢的例子,查詢和返回是一致的)

2. 以產品為中心(就是有所需要的資料所驅動)

3. 強型別(每個資料點 都會有特定的型別)

4. 客戶端定製查詢(需要哪些屬性,查詢哪些屬性)

GraphQl歷史

1. 源自Facebook

2. 2012年Facebook開始開發

3. 2015年開源

GraphQl誰在使用

1. Facebook

2. GitHub api V4

3. Paypal ...........等

GraphQl 強型別 .NET 型別

使用ASP.NET Core 構建GraphQL

.Net服務端文件地址 https://graphql-dotnet.github.io/docs/getting-started/installation

相關庫:

1. GraphQL

2.GraphQl.Server.Transports.AspNetCore

3.GraphQl.Server.Transports.WebSockets UI:(用於瀏覽器) GraphQl.Server.Ui.Playground(可選 *) GraphQl.Server.Ui.Voyager(可選) GraphQl.Server.Ui.GraphQl(可選)

IOC、DI、DIP IOC容器相當於一個工廠,負責建立物件的 IOC控制反轉:只是把上端對下端的依賴,換成第三方容器決定 DI依賴注入:(全稱是...)就是在構造某個物件時,能將物件依賴的東西自動的初始化進去正是因為要實現IOC,所以才誕生了DI的技術手段 DIP(依賴倒置原則)就是上層模組不應該依賴底層模組,它們都應該依賴於抽象,具體點是Service不應該依賴於Repository(倉儲層),而應該依賴於IRepository Dl 再有 建構函式的時候 會內部優先 然後再是外面(*)

1.new 運算子 用於建立物件和呼叫建構函式。

2.new 修飾符 用於向基類成員隱藏繼承成員。

3.new 約束 用於在泛型宣告中約束可能用作型別引數的引數的型別。

ES6的展開 運算子

https://mingjiezhang.github.io/2016/09/24/ECMAScript-6%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9A%E5%B1%95%E5%BC%80%E8%BF%90%E7%AE%97%E7%AC%A6/

1. 類似 MVVM 2.AutoMapper 處理物件關係對映

3.大神推薦:

B站連結:https://space.bilibili.com/361469957?spm_id_from=333.788.b_765f7570696e666f.1

THANK YOU