2026-06-01 部署 Web API
2026-06-01 部署 Web API
我:
3. 部署 Web API:
- 使用 Docker 或 Azure App Service 部署你的 Web API。
- 學習如何將 API 部署到雲端,讓其他人也能訪問。
這要如何做?
GPT:
作業說明:擴展 DAO 方法與異常處理
第 1 部分:添加更多 DAO 方法
更新包裹的方法:
- 在您的 DAO 類別中添加一個名為
updatePackage的方法,用於更新包裹的狀態或其他屬性。 - 方法應接收一個
Package物件(包含更新後的所有屬性),並根據TrackingNumber來執行更新。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public bool UpdatePackage(Package package)
{
string query = "UPDATE Packages SET Sender = @Sender, Recipient = @Recipient, Status = @Status WHERE TrackingNumber = @TrackingNumber";
using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Sender", package.Sender);
command.Parameters.AddWithValue("@Recipient", package.Recipient);
command.Parameters.AddWithValue("@Status", package.Status);
command.Parameters.AddWithValue("@TrackingNumber", package.TrackingNumber);
connection.Open();
int rowsAffected = command.ExecuteNonQuery();
return rowsAffected > 0;
}
}
}- 在您的 DAO 類別中添加一個名為
刪除包裹的方法:
- 添加一個名為
deletePackage的方法,用於根據TrackingNumber刪除包裹記錄。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public bool DeletePackage(string trackingNumber)
{
string query = "DELETE FROM Packages WHERE TrackingNumber = @TrackingNumber";
using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@TrackingNumber", trackingNumber);
connection.Open();
int rowsAffected = command.ExecuteNonQuery();
return rowsAffected > 0;
}
}
}- 添加一個名為
第 2 部分:進一步測試資料庫操作
更新單元測試:
- 更新現有的單元測試來測試
updatePackage和deletePackage方法。 - 您可以使用
Moq等模擬工具來模擬資料庫連接和操作,以確保您的 DAO 在沒有實際資料庫的情況下也能進行測試。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27[]
public void UpdatePackage_ShouldReturnTrue_WhenPackageIsUpdated()
{
// Arrange
var package = new Package { TrackingNumber = "12345ABC", Sender = "NewSender", Recipient = "NewRecipient", Status = "Delivered" };
var dao = new PackageDao();
// Act
bool result = dao.UpdatePackage(package);
// Assert
Assert.IsTrue(result);
}
[]
public void DeletePackage_ShouldReturnTrue_WhenPackageIsDeleted()
{
// Arrange
var trackingNumber = "12345ABC";
var dao = new PackageDao();
// Act
bool result = dao.DeletePackage(trackingNumber);
// Assert
Assert.IsTrue(result);
}- 更新現有的單元測試來測試
第 3 部分:加入異常處理
資料庫操作中的異常處理:
- 在每個 DAO 方法中加入
try-catch塊,以便在發生異常時能夠捕捉並處理,例如資料庫連接失敗或 SQL 語句執行失敗。 - 可以記錄異常訊息,並根據需要返回錯誤碼或自定義的異常類型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27public bool UpdatePackage(Package package)
{
string query = "UPDATE Packages SET Sender = @Sender, Recipient = @Recipient, Status = @Status WHERE TrackingNumber = @TrackingNumber";
try
{
using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@Sender", package.Sender);
command.Parameters.AddWithValue("@Recipient", package.Recipient);
command.Parameters.AddWithValue("@Status", package.Status);
command.Parameters.AddWithValue("@TrackingNumber", package.TrackingNumber);
connection.Open();
int rowsAffected = command.ExecuteNonQuery();
return rowsAffected > 0;
}
}
}
catch (SqlException ex)
{
// 記錄異常訊息並處理
Console.WriteLine("An error occurred while updating the package: " + ex.Message);
return false;
}
}- 在每個 DAO 方法中加入
全域異常處理:
- 在應用程式中設置全域異常處理器,用於捕捉未預期的異常,防止應用程式崩潰。
第 4 部分:部署 Web API
使用 Docker 部署 Web API:
編寫 Dockerfile:為您的 Web API 編寫一個 Dockerfile,描述應用程式如何構建和運行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 使用官方的 .NET Core SDK 作為基礎映像
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app/build
FROM base AS final
WORKDIR /app
COPY --from=build /app/build .
ENTRYPOINT ["dotnet", "YourWebApi.dll"]構建 Docker 映像:在專案目錄中運行以下命令來構建映像:
1
docker build -t yourwebapi-image .
運行 Docker 容器:使用以下命令運行您的 Web API 容器:
1
docker run -d -p 8080:80 yourwebapi-image
訪問 API:您的 API 將在本地的
http://localhost:8080上可用。
使用 Azure App Service 部署 Web API:
創建 Azure App Service:登入 Azure 入口網站,創建一個新的 App Service,選擇適合的方案。
部署 Web API:可以使用 Visual Studio 直接發布,也可以使用 Azure CLI:
1
az webapp up --name yourwebapi-app --resource-group your-resource-group --location your-location
配置應用設置:在 Azure App Service 中配置應用的連接字串和其他必要的環境變數。
學習資料:
- Docker 教程:Docker 官方文檔
- Azure App Service 教程:Azure App Service 文檔
學習如何將 API 部署到雲端,這樣其他人就能通過網路訪問您的 Web API。