第二章 创建第一个Web API项目
2.1 项目模板选择
控制器型Web API与最小API
ASP.NET Core提供了两种主要的Web API开发方式:
控制器型Web API (Controller-based Web API):
- 基于控制器类和动作方法
- 提供更多开箱即用的功能和结构
- 适合复杂或大型API项目
- 有丰富的特性支持,如模型绑定、验证、筛选器等
最小API (Minimal API):
- 简化的API开发方法,减少样板代码
- 直接在Program.cs中定义端点
- 适合小型项目或微服务
- 从.NET 6开始引入,并在后续版本不断增强
本手册主要聚焦于控制器型Web API,它更适合学习完整的ASP.NET Core Web API功能集。
2.2 使用Visual Studio创建项目
步骤详解:
- 启动Visual Studio 2022
- 点击"创建新项目"
- 在搜索框中输入"Web API"
- 选择"ASP.NET Core Web API"模板,点击"下一步"
- 在"配置新项目"对话框中:
- 输入项目名称(如"TodoApi")
- 选择合适的位置保存项目
- 可选:修改解决方案名称
- 点击"下一步"
- 在"附加信息"对话框中:
- 确认使用.NET 8.0(或最新版本)
- 确保"使用控制器"选项被勾选
- 确保"启用OpenAPI支持"被勾选(这将添加Swagger文档)
- 根据需要配置"启用Docker"和"配置HTTPS"选项
- 点击"创建"
Visual Studio将创建项目并打开解决方案,包含基本的项目结构和示例控制器。
2.3 使用.NET CLI创建项目
如果您使用Visual Studio Code或其他编辑器,可以通过.NET CLI创建项目:
# 创建新的Web API项目
dotnet new webapi -n TodoApi
# 进入项目目录
cd TodoApi
# 打开VS Code(如果使用)
code .
2.4 理解项目结构
默认文件与文件夹
创建的Web API项目包含以下关键文件和文件夹:
- Program.cs:应用程序入口点,包含应用配置和启动代码
- appsettings.json:应用程序配置文件
- Controllers/:控制器类所在的文件夹
- WeatherForecastController.cs:示例API控制器
- Properties/:包含启动和项目配置
- launchSettings.json:定义如何启动应用程序
- WeatherForecast.cs:示例数据模型
- [项目名].csproj:项目定义文件,包含项目依赖和配置
Program.cs详解
.NET 6+使用顶级语句(Top-level statements)简化了Program.cs文件。以下是一个典型的Program.cs文件及其关键部分:
var builder = WebApplication.CreateBuilder(args);
// 添加服务到依赖注入容器
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// 配置HTTP请求管道(中间件)
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
关键部分解释:
WebApplication.CreateBuilder(args):创建应用程序构建器- 服务注册:将服务添加到依赖注入容器
builder.Build():构建应用程序实例- 中间件配置:设置请求处理管道
app.Run():启动应用程序
2.5 运行和测试初始项目
运行项目
使用Visual Studio:
- 按F5启动调试,或Ctrl+F5启动不调试
- 项目将在浏览器中打开(通常指向Swagger UI)
使用.NET CLI:
dotnet run
运行后,终端会显示应用程序的URL,通常是https://localhost:7xxx和http://localhost:5xxx(端口可能不同)。
使用浏览器测试
- 在浏览器中打开显示的URL
- 如果启用了Swagger,将显示Swagger UI界面
- 展开"GET /WeatherForecast"端点
- 点击"Try it out"按钮,然后点击"Execute"
- 查看响应结果

第二章 创建第一个Web API项目的更多相关文章
- 使用模板创建第一个Web API项目
软件环境 vs 2015 update3 本节将通过例子讲述创建Web API 项目的方法 第一步,打开vs ,依次通过[文件]菜单,[新建][项目]命令,大致步骤如下图 : 第2步,在弹出对话框 ...
- 搭建一个Web API项目(DDD)
传送阵:写在最后 一.创建一个能跑的起来的Web API项目 1.建一个空的 ASP.NET Web应用 (为什么不直接添加一个Web API项目呢,那样会有些多余的内容(如js.css.Areas等 ...
- 【翻译】在Visual Studio中使用Asp.Net Core MVC创建第一个Web Api应用(二)
运行应用 In Visual Studio, press CTRL+F5 to launch the app. Visual Studio launches a browser and navigat ...
- Web API(三):创建Web API项目
在本篇文章中将讲解如何使用Visual Studio创建一个新的ASP.NET Web API项目. 在Visual Studio中有两种方式用于创建Web API项目: 1.创建带MVC的Web A ...
- 在ASP.NET Web API项目中使用Hangfire实现后台任务处理
当前项目中有这样一个需求:由前端用户的一个操作,需要触发到不同设备的消息推送.由于推送这个具体功能,我们采用了第三方的服务.而这个服务调用有时候可能会有延时,为此,我们希望将消息推送与用户前端操作实现 ...
- 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】
Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(1)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(4)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
随机推荐
- 我的白板工具支持 Markdown 转思维导图啦!
朋友们好,我的开源在线白板工具又更新啦,这次支持了 markdown 文本转思维导图的功能,可以将多级标题.多级列表等转化为思维导图,这次对于 markdown 转思维导图功能的主要识别父子关系 + ...
- B1051 复数乘法
描述 复数可以写成 (A+Bi) 的常规形式,其中 A 是实部,B 是虚部,i 是虚数单位,满足 i^2=−1:也可以写成极坐标下的指数形式 (R×e(Pi) ),其中 R 是复数模,P 是辐角 ...
- codeup之矩阵转置
Description 将一个2行3列的矩阵(二维数组)行列互换,存储到另一个3行2列的矩阵中. 要求以整型数据为例来解答. Input 输入2行数据,每行3个整数,以空格分隔. Output 行列互 ...
- idea的快捷配置2
https://blog.csdn.net/b644ROfP20z37485O35M/article/details/84207709#t3 本文为方便自己日后再找啥的,如有不妥,还望指教 //本文只 ...
- Array, Set, Map知多少?
Array,Set和Map三个作为Javascript中可迭代的集合数据类型,在编程过程中使用的频率也比较高.针对三种数据类型各自的一些特性,本文的内容将从以下几个方面来上述数据类型做一个总结. 实例 ...
- Java遍历Map对象的常见方法
在Java中遍历Map有不少的方法,我们看一下最常用的方法及其优缺点. 既然Java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...
- Django Web应用开发实战第七章
一.ORM框架 Django对各种数据库提供了很好的支持,包括PostgreSQL.MySQL.SQLite和Oracle,且为这些数据库提供了统一API方法,这些API统称为ORM框架. 通过Dja ...
- REVM移植小记
之前做过的一些部署移植的工作,基本都是用C++语言写的,在后来我学了一些Rust,并且慢慢熟悉了Rust的工具链,最近也在尝试部署一些Rust的开源项目到OpenEuler RISC-V操作系统上 ...
- Python字符串进化史:从青涩到成熟的蜕变
Python字符串进化史:从青涩到成熟的蜕变 Python 2.x 的字符串世界 在 Python 2.x 的时代,字符串处理已经是编程中的基础操作,但与现在相比,有着不少差异.在 Python 2. ...
- 一则复杂 SQL 改写后有感
抱歉很久没写技术博客. 自从LLM爆发之后,写概念堆叠的所谓"博客"已经没有意义了,那么我会思考我的博客还有什么作用. 得出的结论是:具体业务的讨论仍然是有价值的 所以之后会随缘更 ...