2、第一个Web应用:创建项目、项目结构解析、Program.cs与Startup.cs的秘密、运行你的第一个API
好,咱们正式开始动手了。
这一章,我会带你从零创建一个ASP.NET Core项目。别怕,真的就几步。我当年第一次接触时,也被各种文件搞晕过。但等你走完这一遍,会发现——其实就那么回事。
2.1 创建项目:两种方式,随你挑
创建项目有两种主流方式。我个人习惯用命令行,因为快。但如果你喜欢点鼠标,用Visual Studio也行。
方式一:命令行(推荐)
打开终端,敲下面这行命令:
dotnet new webapi -n MyFirstApi
解释一下:
dotnet new是创建项目的命令webapi是模板名称,表示创建Web API项目-n MyFirstApi指定项目名称
命令执行完,你会看到一个 MyFirstApi 文件夹。进去看看:
cd MyFirstApi
code .
如果你装了VS Code,这会直接打开项目。嗯,就这么简单。
方式二:Visual Studio
如果你用VS,步骤是:
- 文件 → 新建 → 项目
- 选择“ASP.NET Core Web API”模板
- 填项目名、选位置,点创建
效果一样。我个人觉得命令行更干脆,但看你自己习惯。
2.2 项目结构解析:这些文件都是干嘛的?
项目创建好了,你会看到一堆文件。别慌,咱们一个一个看。
| 文件/文件夹 | 作用 |
|---|---|
Controllers/ |
存放API控制器,你的接口逻辑主要写在这里 |
Program.cs |
应用程序的入口,启动配置的核心 |
appsettings.json |
配置文件,比如数据库连接字符串、日志级别等 |
Properties/launchSettings.json |
启动配置,比如端口号、环境变量 |
MyFirstApi.csproj |
项目文件,记录依赖包、目标框架等信息 |
你想想看,一个Web应用要跑起来,至少需要三样东西:
- 入口(Program.cs)
- 配置(appsettings.json)
- 业务逻辑(Controllers里的代码)
ASP.NET Core把这几个职责分得很清楚。我在项目中遇到过不少新手,把所有代码都塞进Program.cs,结果项目一复杂就乱成一锅粥。别学他们。
2.3 Program.cs与Startup.cs的秘密
这里有个历史故事。在.NET 6之前,项目里有两个核心文件:Program.cs 和 Startup.cs。从.NET 6开始,微软把它们合并了。说白了,就是简化了启动流程。
咱们打开 Program.cs,看看里面到底写了啥:
var builder = WebApplication.CreateBuilder(args);
// 注册服务
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// 配置中间件管道
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
这段代码,我拆成三部分给你讲:
第一部分:创建Builder并注册服务
builder.Services.AddControllers() 这行,说白了就是告诉系统:“我要用控制器模式”。你想想看,如果不注册,系统根本不知道你有控制器。
我刚开始学的时候,总忘记加这行。结果一运行,接口404。排查了半天,原来是没注册服务。嗯,这种坑踩过一次就记住了。
第二部分:构建应用并配置中间件
app.UseSwagger() 这些,就是所谓的“中间件”。你可以把中间件想象成流水线上的工人。每个工人负责一道工序:
- Swagger中间件:生成API文档
- HTTPS重定向中间件:把HTTP请求转到HTTPS
- 授权中间件:检查用户有没有权限
中间件的顺序很重要。我曾经在生产环境遇到过一个问题:把授权中间件放到了Swagger后面,结果Swagger页面能访问,但实际接口全被拦截了。顺序搞反了。
第三部分:启动应用
app.Run() 这行,就是让应用开始监听请求。没有这行,程序跑完就退出了。
2.4 运行你的第一个API
好了,理论讲完了。咱们来点实际的。
在终端里运行:
dotnet run
你会看到类似这样的输出:
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
打开浏览器,访问 https://localhost:5001/swagger。你会看到一个漂亮的API文档页面。这就是Swagger UI。
在页面上,你会看到一个 GET /WeatherForecast 的接口。点一下“Try it out”,再点“Execute”。
你会看到返回的JSON数据:
[
{
"date": "2024-01-15",
"temperatureC": 25,
"temperatureF": 77,
"summary": "Hot"
},
{
"date": "2024-01-16",
"temperatureC": 18,
"temperatureF": 64,
"summary": "Mild"
}
]
恭喜你!你的第一个API跑起来了。
dotnet dev-certs https --trust 即可解决。我当年被这个坑了整整一下午。
这个 WeatherForecast 控制器是模板自带的。它演示了:
- 如何定义GET接口
- 如何返回JSON数据
- 如何使用Swagger测试接口
说白了,这就是一个“Hello World”的升级版。但别小看它,麻雀虽小五脏俱全。
2.5 本章小结
咱们这一章,做了三件事:
- 创建了一个ASP.NET Core Web API项目
- 搞清楚了项目里每个文件是干嘛的
- 理解了Program.cs的核心逻辑
- 成功运行了第一个API
下一章,咱们会深入控制器,看看怎么自己写接口。到时候,你就可以摆脱那个示例的WeatherForecast,写真正属于你自己的API了。
记住:别怕犯错。我写代码十几年,照样天天踩坑。关键是踩完坑要明白为什么。好了,去动手试试吧。