当前位置: 首页 > news >正文

ASP.NET Core Web API 控制器

文章目录
  • 一、基类:ControllerBase
  • 二、API 控制器类属性
  • 三、使用 Get() 方法提供天气预报结果

在这里插入图片描述
在这里插入图片描述


在深入探讨如何编写自己的 PizzaController 类之前,让我们先看一下 WeatherController 示例中的代码,了解它的工作原理。 在本单元中,你将了解 WeatherController 如何在几十行代码中使用 ControllerBase 基类和几个 .NET 属性来生成正常工作的 Web API。 了解这些概念后,便可以编写自己的 PizzaController 类了。

以下是整个 WeatherController 类的代码。 如果你还不明白,请不要担心。 现在来逐步完成这一过程。

using Microsoft.AspNetCore.Mvc;namespace ContosoPizza.Controllers;[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{private static readonly string[] Summaries = new[]{"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"};private readonly ILogger<WeatherForecastController> _logger;public WeatherForecastController(ILogger<WeatherForecastController> logger){_logger = logger;}[HttpGet(Name = "GetWeatherForecast")]public IEnumerable<WeatherForecast> Get(){return Enumerable.Range(1, 5).Select(index => new WeatherForecast{Date = DateTime.Now.AddDays(index),TemperatureC = Random.Shared.Next(-20, 55),Summary = Summaries[Random.Shared.Next(Summaries.Length)]}).ToArray();}
}

一、基类:ControllerBase

控制器是一个公共类,具有一个或多个称为“操作”的公共方法。 按照惯例,控制器放在项目根目录的 Controllers 目录中。 操作通过路由被公开为 HTTP 终结点。 因此,对 https://localhost:{PORT}/weatherforecast 的 HTTP GET 请求将执行 WeatherForecastController 类的 Get() 方法。

首先要注意的是,此类继承自 ControllerBase 基类。 这个基类提供了许多用于处理 HTTP 请求的标准功能,让你可以专注于应用程序的特定业务逻辑。

备注
如果你在 ASP.NET Core 中开发过 Razor Pages 或模型-视图-控制器 (MVC) 体系结构,那么你已使用过 Controller 类。 不要通过从 Controller 类派生来创建 Web API 控制器。 Controller 派生自 ControllerBase,并添加了对视图的支持,因此它用于处理网页,而不是 Web API 请求。

二、API 控制器类属性

有两个重要属性应用到了 WeatherForecastController,如以下代码所示:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase

[ApiController] 启用固定行为,使生成 Web API 更加容易。 一些行为包括参数源推理、将属性路由作为一项要求以及模型验证错误处理增强功能*。

[Route] 定义路由模式 [controller]。 [controller] 令牌替换为用控制器的名称(不区分大小写,无 Controller 后缀)。 此控制器处理对 https://localhost:{PORT}/weatherforecast 的请求。

备注
路由可能包含静态字符串,如 api/[controller] 中所示。 在此示例中,此控制器将处理对 https://localhost:{PORT}/api/weatherforecast 的请求。

三、使用 Get() 方法提供天气预报结果

WeatherForecastController 包括由 [HttpGet(Name = “GetWeatherForecast”)] 属性指定的单个控制器操作。 此属性将 HTTP GET 请求路由到 public IEnumerable Get() 方法。 如你所见,在上一个练习中,向 https://localhost:{PORT}/weatherforecast 发出请求会导致返回天气预报结果。

本模块的后面部分会介绍其他常见操作与执行 CRUD 操作(GET、PUT、POST、DELETE)的 Web API 相关联。 但 API 控制器只需要实现一个控制器操作。

在本例中,你将获取返回的 WeatherForecast 项的完整列表。 GET 操作还允许通过传递标识符来检索单个项。 在 ASP.NET 中,可以使用 [HttpGet(“{id}”)] 特性检索单个项。 在下一练习中将实现该属性。

现在,你已了解了 Web API 控制器的基本组件,现在可以创建自己的 PizzaController 类了。


在这里插入图片描述

http://www.lryc.cn/news/509069.html

相关文章:

  • RAID5原理简介和相关问题
  • Axure RP 8安装(内带安装包)
  • stm32定时器输出比较----驱动步进电机
  • 关于鸿蒙架构feature
  • 【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(一)
  • vue3 如何使用 mounted
  • PostgreSQL JOIN
  • mysql(基础语法)
  • 【论文阅读笔记】Scalable, Detailed and Mask-Free Universal Photometric Stereo
  • 抓取手机HCI日志
  • 【linux】 unshare -user -r /bin/bash命令详解
  • 微软远程桌面APP怎么用
  • Android9.x SurfaceView源码分析
  • MDS-NPV/NPIV
  • 通用人工智能的关键:统一语言描述万物
  • JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
  • [前端]HTTP库Axios
  • vue3入门教程:reactive函数
  • SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
  • 叉车作业如何确认安全距离——UWB测距防撞系统的应用
  • 5-Gin 静态文件服务 --[Gin 框架入门精讲与实战案例]
  • 【自动驾驶】3 激光雷达③
  • Vue 3.5 编写 ref 时,自动插入.Value
  • 从0到1实现一个RS蓝图系统-概念提出技术栈选型
  • npm淘宝镜像
  • 深入解析:Python中的决策树与随机森林
  • 奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试
  • 【Leetcode】1705. 吃苹果的最大数目
  • 职业技能赛赛后心得
  • 从AI换脸到篡改图像,合合信息如何提升视觉内容安全?