
一步步教你進行 Python REST API 身份驗證
假設我們有一個簡單的“股票”(Stock)管理 API,項目目錄示例:
/Controllers
StocksController.cs
/Models
Stock.cs
/DTOs
CreateStockRequestDto.cs
/Mappings
StockMapper.cs
/Data
AppDbContext.cs
Id
、Symbol
、CompanyName
、PurchasePrice
、LastDividend
、Industry
、MarketCap
等屬性。DbSet < Stock >
。AddDbContext
與路由、控制器。[FromBody]
接收綁定到 DTO。DbContext.Add(entity)
將實體置為“跟蹤”狀態,但不立即寫入數據庫。SaveChanges()
時,EF Core 才會將變更寫入數據庫。CreatedAtAction
返回包含新資源 URL 的 201 Created
響應。為了避免前端或用戶提交不必要或敏感字段,需要單獨定義 Create Request DTO:
public class CreateStockRequestDto
{
public string Symbol { get; set; }
public string CompanyName { get; set; }
public decimal PurchasePrice{ get; set; }
public decimal LastDividend { get; set; }
public string Industry { get; set; }
public long MarketCap { get; set; }
}
DTO 只負責接收外部數據,寫庫前需轉換成 EF 實體 Stock
:
public static class StockMapper
{
public static Stock FromCreateDto(CreateStockRequestDto dto)
{
return new Stock
{
Symbol = dto.Symbol,
CompanyName = dto.CompanyName,
PurchasePrice = dto.PurchasePrice,
LastDividend = dto.LastDividend,
Industry = dto.Industry,
MarketCap = dto.MarketCap
};
}
}
在 StocksController.cs
中添加創建方法:
[HttpPost]
public IActionResult CreateStock([FromBody] CreateStockRequestDto dto)
{
// 1. DTO 轉實體
var stock = StockMapper.FromCreateDto(dto);
// 2. 添加到 DbContext
_context.Stocks.Add(stock);
// 3. 持久化到數據庫
_context.SaveChanges();
// 4. 返回 201 Created,并包含新資源 URL
return CreatedAtAction(
nameof(GetStockById),
new { id = stock.Id },
stock
);
}
_context.Stocks.Add(stock);
_context.SaveChanges();
return CreatedAtAction(
nameof(GetStockById),
new { id = stock.Id },
stock
);
dotnet watch run
。Postman/Swagger:
/api/stocks
,Body 填入 DTO JSON。Location
頭看到新資源 URL。Stocks
表中插入了新記錄。Add
僅跟蹤,SaveChanges()
真正提交。CreatedAtAction
返回 201 Created
和資源 URL。通過以上步驟,你已掌握 ASP.NET Core 中標準 POST 創建接口的核心技巧,助你快速、高質量地交付 API。
原文引自YouTube視頻:https://www.youtube.com/watch?v=yxQ9CSwc_uk