2.1 项目模板选择

控制器型Web API与最小API

ASP.NET Core提供了两种主要的Web API开发方式:

  1. 控制器型Web API (Controller-based Web API)

    • 基于控制器类和动作方法
    • 提供更多开箱即用的功能和结构
    • 适合复杂或大型API项目
    • 有丰富的特性支持,如模型绑定、验证、筛选器等
  2. 最小API (Minimal API)

    • 简化的API开发方法,减少样板代码
    • 直接在Program.cs中定义端点
    • 适合小型项目或微服务
    • 从.NET 6开始引入,并在后续版本不断增强

本手册主要聚焦于控制器型Web API,它更适合学习完整的ASP.NET Core Web API功能集。

2.2 使用Visual Studio创建项目

步骤详解

  1. 启动Visual Studio 2022
  2. 点击"创建新项目"
  3. 在搜索框中输入"Web API"
  4. 选择"ASP.NET Core Web API"模板,点击"下一步"
  5. 在"配置新项目"对话框中:
    • 输入项目名称(如"TodoApi")
    • 选择合适的位置保存项目
    • 可选:修改解决方案名称
    • 点击"下一步"
  6. 在"附加信息"对话框中:
    • 确认使用.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();

关键部分解释:

  1. WebApplication.CreateBuilder(args):创建应用程序构建器
  2. 服务注册:将服务添加到依赖注入容器
  3. builder.Build():构建应用程序实例
  4. 中间件配置:设置请求处理管道
  5. app.Run():启动应用程序

2.5 运行和测试初始项目

运行项目

使用Visual Studio

  1. 按F5启动调试,或Ctrl+F5启动不调试
  2. 项目将在浏览器中打开(通常指向Swagger UI)

使用.NET CLI

dotnet run

运行后,终端会显示应用程序的URL,通常是https://localhost:7xxx和http://localhost:5xxx(端口可能不同)。

使用浏览器测试

  1. 在浏览器中打开显示的URL
  2. 如果启用了Swagger,将显示Swagger UI界面
  3. 展开"GET /WeatherForecast"端点
  4. 点击"Try it out"按钮,然后点击"Execute"
  5. 查看响应结果

第二章 创建第一个Web API项目的更多相关文章

  1. 使用模板创建第一个Web API项目

    软件环境 vs 2015 update3 本节将通过例子讲述创建Web API 项目的方法 第一步,打开vs ,依次通过[文件]菜单,[新建][项目]命令,大致步骤如下图 :   第2步,在弹出对话框 ...

  2. 搭建一个Web API项目(DDD)

    传送阵:写在最后 一.创建一个能跑的起来的Web API项目 1.建一个空的 ASP.NET Web应用 (为什么不直接添加一个Web API项目呢,那样会有些多余的内容(如js.css.Areas等 ...

  3. 【翻译】在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 ...

  4. Web API(三):创建Web API项目

    在本篇文章中将讲解如何使用Visual Studio创建一个新的ASP.NET Web API项目. 在Visual Studio中有两种方式用于创建Web API项目: 1.创建带MVC的Web A ...

  5. 在ASP.NET Web API项目中使用Hangfire实现后台任务处理

    当前项目中有这样一个需求:由前端用户的一个操作,需要触发到不同设备的消息推送.由于推送这个具体功能,我们采用了第三方的服务.而这个服务调用有时候可能会有延时,为此,我们希望将消息推送与用户前端操作实现 ...

  6. 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 创 ...

  7. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  8. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  9. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(1)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

  10. 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(4)

    chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...

随机推荐

  1. arcgis创建sqlserver企业级空间数据库过程中出现的问题及解决方案

    在arcgis中创建sqlserver版本的企业空间数据库过程中,出现了多种问题,现把问题的现象.原因和解决方案记录下来,以防遗忘(年纪大了). 1 用sa账号创建空间数据库提示创建失败15456 安 ...

  2. Antd VUE中table子表同时只展开一个子信息的说明

    前言 在网上搜索了很久,很多方法都不太好用,不过经过整理发现,有一个方式是最简单的,比网路上那些copy粘贴的千篇一律的错来说,其实真正的使用方式很简单 想必大家要实现的效果都是上图这样的 <t ...

  3. elasticsearch RestHighLevelClient 关于index的常用操作

    对于索引的操作是基于***IndexRequest来进行操作的.例如:CreateIndexRequest.DeleteIndexRequest.GetIndexRequest 常见操作中还有校验索引 ...

  4. P4602 [CTSC2018] 混合果汁

    贪心思想,整体二分+权值线段树解决. \(Step\ 1\) 首先将所有果汁的美味度按从大到小排序,若美味度高的果汁可以满足小朋友的两个需求,则储存答案. \(Step\ 2\) 不断二分果汁,并且枚 ...

  5. Benchmark论文解读:Evaluating the Ripple Effects of Knowledge Editing in Language Models

      论文发表于自然语言处理顶刊TACL-2024(原文链接).目前模型编辑方法的评估主要集中在测试单个事实是否被成功注入,以及模型对其它事实的预测是否没有改变.作者认为这样的评估模式有限,因为注入一个 ...

  6. MySQL 主从延迟导致业务数据不一致

    场景: 写入一条优惠劵数据,然后将该优惠劵信息读取出来同步给下游数据 现象: 本地写入优惠劵数据成功,同步信息成功.上周同步数据代码正常,周末改了发送优惠劵的信息,然后周一来了发现同步数据无法同步. ...

  7. SAP 发布简易REST 一:login验证

    说明:这里没有使用ODATA,只是用最基础的HTTP和JSON来处理. 这篇为第一篇,所以这里来说说验证的一些东西. 创建SE24实施类,做http接口:ZCRM_REST 激活后,添加接口类:IF_ ...

  8. 三分钟带你了解一站式大数据平台运维管家ChengYing产品包制作

    课件获取:关注公众号 "数栈研习社",后台私信 "ChengYing" 获得直播课件 视频回放:点击这里 ChengYing 开源项目地址:github 丨gi ...

  9. 纯C#软实现openGL(V0.1),黑盒变白盒

    纯C#软实现openGL(V0.1),黑盒变白盒 为了彻底掌握openGL,做一个openGL的软实现(命名为SoftGLImpl)是必要的.(而非仅仅调用opengl32.dll) openGL A ...

  10. HyperWorks实体网格划分

    实体网格剖分 在 HyperMesh 中,使用 Solid Map 功能进行实体网格剖分.该面板如下图所示: 图 4-4 Solid Map 面板 Ø 通过 Solid Map Panel 进行实体网 ...