iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
Microsoft Azure

Azure 的自我修煉系列 第 14

Day14 實作 ASP.NET Core 建立 Web API

實作 ASP.NET Core 建立 Web API 教學

參考 教學課程:使用 ASP.NET Core 建立 web API

在本教學課程中,您會了解如何:

  1. 建立 Web API 專案。
  2. 新增模型類別和資料庫內容。
  3. 使用 CRUD 方法 Scaffold 控制器。
  4. 設定路由、URL 路徑和傳回值。
  5. 使用 Postman 呼叫 Web API。

建立 Web API 專案

使用 dotnet new 創建 webapi 專案
專案名稱: PellokITHomeApi

dotnet new webapi -o PellokITHomeApi

https://ithelp.ithome.com.tw/upload/images/20200914/20072651aQtkWJCdiu.png

增加 SqlServer 模組

cd PellokITHomeApi
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

https://ithelp.ithome.com.tw/upload/images/20200914/200726512DZceVrDJl.png

增加 InMemory 模組

dotnet add package Microsoft.EntityFrameworkCore.InMemory

https://ithelp.ithome.com.tw/upload/images/20200914/20072651KIYBFQlGeR.png

開啟 vscode

code -r ../PellokITHomeApi

https://ithelp.ithome.com.tw/upload/images/20200914/200726519zBy8939yu.png

創建 webapi 時,會有一隻預設API,
可以先啟動服務看看是否正常使用
啟動服務,使用瀏覽器開啟以下測試頁面
https://localhost:5001/WeatherForecast
https://ithelp.ithome.com.tw/upload/images/20200914/20072651BUd2XolpGE.png

新增模型類別和資料庫內容

新增模型類別

mkdir Models
touch Models/Article.cs
public class Article
{
    public long Id { get; set; }
    public string Name { get; set; }
    public bool IsComplete { get; set; }
}

新增資料庫內容

touch Models/ArticleContext.cs
using Microsoft.EntityFrameworkCore;

namespace PellokITHomeApi.Models
{
    public class ArticleContext : DbContext
    {
        public ArticleContext(DbContextOptions<ArticleContext> options)
            : base(options)
        {
        }

        public DbSet<Article> Articles { get; set; }
    }
}

登錄資料庫內容
修改 Startup.cs

using Microsoft.EntityFrameworkCore;
using PellokITHomeApi.Models;

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ArticleContext>(opt =>
       opt.UseInMemoryDatabase("ArticleList"));
    services.AddControllers();
}

使用 CRUD 方法 Scaffold 控制器

安裝 CodeGeneration 模組

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

https://ithelp.ithome.com.tw/upload/images/20200914/200726514IGQQB2wL7.png

安裝 EntityFrameworkCore 模組

dotnet add package Microsoft.EntityFrameworkCore.Design

https://ithelp.ithome.com.tw/upload/images/20200914/20072651zZO3ZHk8zE.png

使用 aspnet-codegenerator 產生 controller 程式
名稱: ArticlesController
表名稱: Article
Context名稱: ArticleContent

dotnet aspnet-codegenerator controller -name ArticlesController -async -api -m Article -dc ArticleContext -outDir Controllers

https://ithelp.ithome.com.tw/upload/images/20200914/200726516l3403KfUJ.png

產生的程式碼:
標記具有屬性的類別 [ApiController] 。 這個屬性表示控制器會回應 Web API 要求。 如需屬性所啟用之特定行為的相關資訊,請參閱 使用 ASP.NET Core 建立 Web API。
使用 DI 將資料庫內容 (TodoContext) 插入到控制器中。 控制器中的每一個 CRUD 方法都會使用資料庫內容。

使用 Postman 呼叫 Web API

安裝 Postman
https://ithelp.ithome.com.tw/upload/images/20200914/200726514qoH6g2wyJ.png

創建 Collection
https://ithelp.ithome.com.tw/upload/images/20200914/2007265129lJHuumbd.png
https://ithelp.ithome.com.tw/upload/images/20200914/20072651lBXDlaGyA9.png

創建 Request
將 HTTP 方法設為 POST。
將 URI 設定為 https://localhost:/api/Atricles 。
例如 https://localhost:5001/api/Articles
選取 [Body]**** (本文) 索引標籤。
選取 [原始]**** 選項按鈕。
將類型設定為 JSON (application/json)。
在要求本文中,針對待辦項目輸入 JSON:

https://ithelp.ithome.com.tw/upload/images/20200914/200726512XRKcVvgUJ.png

https://ithelp.ithome.com.tw/upload/images/20200914/20072651mMAqokz6HU.png

相關連結:

上一篇 Day13 部署 Webapp 使用 SQL服務
下一篇 Day15 網頁基礎知識


上一篇
Day13 部署 Webapp 使用 SQL服務
下一篇
Day15 網頁基礎知識
系列文
Azure 的自我修煉30

1 則留言

0
eric19740521
iT邦新手 3 級 ‧ 2021-04-01 18:30:01

我照著改一部分名稱為web05
mysql資料庫的webapi
不知道你是否有解決方法

**
cd web03
dotnet new webapi
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.InMemory
dotnet add package Pomelo.EntityFrameworkCore.MySql

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
 

底下就開始有問題

D:\csharp\web05>dotnet add package Microsoft.EntityFrameworkCore.Design
  正在判斷要還原的專案...
  Writing C:\Users\user\AppData\Local\Temp\tmpC659.tmp
info : 正在將套件 'Microsoft.EntityFrameworkCore.Design' 的 PackageReference 新增至專案 'D:\csharp\web05\web05.csproj'。
info :   CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore.design/index.json
info : 正在還原 D:\csharp\web05\web05.csproj 的封裝...
error: NU1107: 偵測到 Microsoft.EntityFrameworkCore.Relational 有版本衝突。請將 Microsoft.EntityFrameworkCore.Relational 5.0.4 直接安裝/參考到專案 web05 來解決此問題。
error:  web05 -> Microsoft.EntityFrameworkCore.Design 5.0.4 -> Microsoft.EntityFrameworkCore.Relational (>= 5.0.4)
error:  web05 -> Pomelo.EntityFrameworkCore.MySql 3.2.4 -> Microsoft.EntityFrameworkCore.Relational (>= 3.1.8 && < 5.0.0).
info : 套件 'Microsoft.EntityFrameworkCore.Design' 與專案 'D:\csharp\web05\web05.csproj' 中的所有架構相容。
info : 已將套件 'Microsoft.EntityFrameworkCore.Design' 版本 '5.0.4' 的 PackageReference 新增至檔案 'D:\csharp\web05\web05.csproj'。
info : 正在認可還原...
info : 正在產生 MSBuild 檔案 D:\csharp\web05\obj\web05.csproj.nuget.g.props。
info : 正在將資產檔案寫入磁碟。路徑: D:\csharp\web05\obj\project.assets.json
log  : 無法還原 D:\csharp\web05\web05.csproj (471 ms 內)。

D:\csharp\web05>dotnet aspnet-codegenerator controller -name ArticlesController -async -api -m Article -dc ArticleContext -outDir Controllers
Scaffolding failed.
Failed to get Project Context for D:\csharp\web05\web05.csproj.

To see more information, enable tracing by setting environment variable 'codegen_trace' = 1.
RunTime 00:00:01.82

D:\csharp\web05>dotnet aspnet-codegenerator controller -name ArticlesController -async -api -m Article -dc ArticleContext -outDir Controllers
Scaffolding failed.
Failed to get Project Context for D:\csharp\web05\web05.csproj.

To see more information, enable tracing by setting environment variable 'codegen_trace' = 1.
RunTime 00:00:01.82

D:\csharp\web05>dotnet build
Microsoft (R) Build Engine for .NET 16.9.0+57a23d249 版
Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。

  正在判斷要還原的專案...
D:\csharp\web05\web05.csproj : error NU1107: 偵測到 Microsoft.EntityFrameworkCore.Relational 有版本衝突。請將 Microsoft.EntityFrameworkCore.Relational 5.0.4 直接安裝/參考到專案 web05 來解決此問題。
D:\csharp\web05\web05.csproj : error NU1107:  web05 -> Microsoft.EntityFrameworkCore.Design 5.0.4 -> Microsoft.EntityFrameworkCore.Relational (>= 5.0.4)
D:\csharp\web05\web05.csproj : error NU1107:  web05 -> Pomelo.EntityFrameworkCore.MySql 3.2.4 -> Microsoft.EntityFrameworkCore.Relational (>= 3.1.8 && < 5.0.0).
  無法還原 D:\csharp\web05\web05.csproj (593 ms 內)。

建置失敗。

D:\csharp\web05\web05.csproj : error NU1107: 偵測到 Microsoft.EntityFrameworkCore.Relational 有版本衝突。請將 Microsoft.EntityFrameworkCore.Relational 5.0.4 直接安裝/參考到專案 web05 來解決此問題。
D:\csharp\web05\web05.csproj : error NU1107:  web05 -> Microsoft.EntityFrameworkCore.Design 5.0.4 -> Microsoft.EntityFrameworkCore.Relational (>= 5.0.4)
D:\csharp\web05\web05.csproj : error NU1107:  web05 -> Pomelo.EntityFrameworkCore.MySql 3.2.4 -> Microsoft.EntityFrameworkCore.Relational (>= 3.1.8 && < 5.0.0).
    0 個警告
    1 個錯誤

經過時間 00:00:01.50

我要留言

立即登入留言