ASP.NET Core 與 RESTful API  開發實戰

ASP.NET Core 與 RESTful API 開發實戰

作者: 楊萬青
出版社: 人民郵電
出版在: 2020-02-01
ISBN-13: 9787115519511
ISBN-10: 711551951X





內容描述


ASP.NET Core是微軟推出的新一代跨平臺、高性能Web開發框架,具有模塊化、內置依賴項註入、開源、易於部署等特點。作為近些年來主流的軟件架構風格,REST旨在構建簡單、可靠、高性能、高伸縮性的Web應用。
本書系統地介紹瞭如何使用ASP.NET Core開發RESTful API應用,共包含10章內容。前3章主要介紹了REST、HTTP、ASP.NET Core的基礎理論。第4~10章講述如何根據前3章的理論逐步構建規範的RESTful API應用,涉及資源的基本操作、Entity Framework Core、高級查詢、日誌、緩存、並發、HATEOAS、認證與安全、測試以及部署等內容。


目錄大綱


第1章REST簡介\t1
1.1 API與REST\t1
1.1.1什麼是API\t1
1.1.2什麼是REST\t2
1.1.3 REST約束\t2
1.1.4對REST的錯誤理解\t4
1.2 HTTP協議\ t5
1.2.1 HTTP簡介\t5
1.2.2統一資源定位符\t5
1.2.3媒體類型\t7
1.2.4 HTTP消息\t8
1.2.5 HTTP方法\t9
1.2.6 HTTP消息頭\t10
1.2.7狀態碼\t12
1.3 REST最佳實踐\t13
1.4其他問題\t14
1.4.1 JSON和XML\t1
1.4.2 API版本\t16
1.5本章小結\t16

第2章.NET Core和ASP.NET Core\t17
2.1 .NET Core簡介\t17
2.2 .NET Standard簡介\t18
2.3 ASP.NET Core簡介\t22
2.3.1 ASP.NET Core主要特性\t22
2.3.2 ASP.NET Core 2.1新增特性\t23
2.3.3 ASP.NET Core 2.2新增特性\t24
2.3.4 ASP.NET Core 3.0的變化\t25
2.3.5將ASP.NET Core 2.1應用升級到ASP.NET Core 2.2\t26
2.4設置開發環境\t26
2.4.1安裝Visual Studio\ t26
2.4.2安裝Visual Studio Code\t28
2.4.3 .NET Core CLI\t29
2.5創建第一個API項目\t30
2.5.1使用Visual Studio 2017\t30
2.5.2使用Visual Studio Code\t36
2.6本章小結\t39

第3章ASP.NET Core核心特性\t40
3.1啟動與宿主\t40
3.1.1應用程序的啟動\t40
3.1.2 Kestrel\t43
3.1.3 Startup類\t45
3.2中間件\t46
3.2.1中間件簡介\t46
3.2.2添加中間件\t47
3.2.3自定義中間件\t51
3.3依賴注入\t52
3.3.1依賴注入簡介\t52
3.3.2 ASP.NET Core中的依賴注入\t55
3.4 MVC\t57
3.4 .1理解MVC模式\t57
3.4.2路由\t58
3.4.3 Controller與Action\t64
3.4.4模型綁定\t67
3.4.5模型驗證\t70
3.4.6過濾器\t72
3.5配置\t78
3.5.1訪問JSON配置文件\t78
3.5.2訪問其他配置源\t79
3.5.3自定義配置源\t82
3.5.4重新加載配置\t85
3.5.5強類型對象\t85
3.6日誌\ t87
3.6.1 ILogger接口\t87
3.6.2 ILoggerFactory接口\t89
3.6.3 ILoggerProvider接口\t90
3.6.4分組和過濾\t91
3.7錯誤處理\t94
3.7.1異常處理\t94
3.7.2錯誤碼處理\t96
3.8本章小結\t96

第4章資源操作\t98
4.1項目創建\t98
4.1.1項目簡介\t98
4.1.2創建項目\t99
4.2使用內存數據\t100
4.2.1創建內存數據源\t100
4.2.2倉儲模式\t101
4.2.3實現倉儲模式\t102
4.3創建Controller\t104
4.4獲取資源\t106
4.4.1獲取集合\t106
4.4.2獲取單個資源\t106
4.4.3獲取父/子形式的資源\t108
4.5創建資源\t110
4.5.1創建資源簡介\t110
4.5.2創建子級資源\t113
4.6刪除資源\t115
4.6.1刪除單個資源\t115
4.6.2刪除父與子\t116
4.7更新資源\t117
4.7.1更新資源簡介\t117
4.7.2部分更新\t120
4.8內容協商\t123
4.8.1內容協商簡介\t123
4.8.2實現內容協商\t125
4.9本章小結\t128

第5章使用Entity Framework Core\t129
5.1 Entity Framework Core\t129
5.1.1 Entity Framework Core簡介\t129
5.1.2在項目中添加EF Core\t130
5.2使用EF Core\t131
5.2.1 EF Core的使用\t131
5.2.2創建實體類\t132
5.2.3創建DbContext類\t134
5.2.4添加遷移與創建數據庫\t135
5.2.5添加測試數據\t137
5.3重構倉儲類\t139
5.3.1創建通用倉儲接口\t139
5.3.2創建其他倉儲接口\t141
5.4重構Controller和Action\t143
5.4.1使用AutoMapper\t143
5.4.2重構AuthorController\t145
5.4. 3重構BookController\t147
5.5本章小結\t151

第6章高級查詢和日誌\t152
6.1分頁\t152
6.1.1實現分頁\t152
6.1.2添加分頁元數據\t154
6.2過濾和搜索\t158
6.2.1過濾\t158
6.2.2搜索\t160
6.3排序\t161
6.3.1實現排序\t162
6.3.2屬性映射\t165
6.4日誌和異常\t168
6.4.1記錄日誌\t168
6.4.2異常處理\t170

6.5本章小結\ t172

第7章高級主題\t173
7.1緩存\t173
7.1.1 HTTP緩存\t173
7.1.2響應緩存中間件\t177
7.1.3內存緩存\t179
7.1.4分佈式緩存\t180
7.2並發\t186
7.2.1為什麼需要並發控制\t186
7.2.2不同的並發處理策略\t187
7.2.3實現並發控制\t188
7.3版本\t190
7.3.1 API版本\t190
7.3.2實現API版本\t191
7.4 HATEOAS\t198
7.4.1 HATEOAS簡介\t198
7.4.2實現HATEOAS\t201
7.5 GraphQL\t207
7.5.1 GraphQL簡介\t207
7.5.2與REST相比\t208
7.5.3添加GraphQL服務\t209
7.6本章小結\t215

第8章認證和安全\t217
8.1認證\t217
8.1.1 HTTP認證\t217
8.1.2實現基於Token的認證\t221
8.2 ASP.NET Core Identity\t227
8.2.1 Identity介紹\t227
8.2.2使用Identity\t230
8.2.3授權\t235
8.3 HTTPS\t239
8.3.1 HTTPS簡介\t239
8.3.2 HTTPS重定向中間件\t241
8.3.3 HSTS中間件\t242
8.4數據保護\t244
8.4.1數據保護API\t244
8.4.2使用數據保護API\ t245
8.4.3配置數據保護\t249
8.4.4用戶機密\t251
8.5 CORS\t254
8.5.1 CORS簡介\t254
8.5.2實現CORS\t256
8.6限流\t259
8.7本章小結\t262

第9章測試和文檔\t263
9.1測試\t263
9.1.1測試簡介\t263
9.1.2單元測試\t264
9.1.3集成測試\t267
9.2文檔\t274
9.2.1 Swagger簡介\t274
9.2.2 XML註釋\t276
9.3本章小結\t279

第10章部署\t280
10.1部署到IIS\t280
10.1.1發布應用\t280
10.1.2 IIS配置\t282
10.1.3 HTTPS配置\t284
10.2部署到Docker\t286
10.2.1 Docker簡介\t286
10.2.2 Docker命令\t288
10.2.3 Docker實踐\t290
10.2.4 Docker Compose簡介\t293
10.2.5 Docker Compose實踐\t294
10.3部署到Azure\t298
10.3.1 Azure簡介\t298
10.3.2創建資源\t298
10.3.3部署到Azure實踐\t300
10.3.4持續部署\t302
10.4本章小結\t305


作者介紹


楊萬青,.NET架構師,具有多年軟件開發經驗,專注於.NET/.NET Core平台的應用開發及技術架構研究,對新技術有濃厚的興趣。




相關書籍

jQuery UI in Action (Paperback)

作者 T. J. VanToll

2020-02-01

HTML5 權威指南(The Definitive Guide to HTML5)

作者 弗里曼 (Adam Freeman)

2020-02-01

Digital Disciplines: Attaining Market Leadership via the Cloud, Big Data, Social, Mobile, and the Internet of Things (Hardcover)

作者 Joe Weinman

2020-02-01