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 类了。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/924977.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

scrapy豆瓣爬虫增强-批量随机请求头

1.1 豆瓣爬虫增强,中间件随机请求头 1.2 清除原有的中间件,进行中间件测试 1.3 导入全新的中间件 1.4 运行爬虫,这个时候的请求头是固定的 1.5 强化对agent的输出,会舍弃输出cookie,使输出更明了 1.6 转移输出请求头位置 新增输出 造成这样问题的原因是Douban/Douban/settings…

三维地形图计算软件(三)-原基于PYQT5+pyqtgraph旧代码

最先入手设计三维地形图及平基挖填方计算软件时&#xff0c;地形图的显示方案是&#xff1a;三维视图基于pyqtgraph.opengl显示和二维视图基于pyqtgraph的PlotWidget来显示地形地貌&#xff0c;作到一半时就发现&#xff0c;地形点过多时&#xff0c;将会造成系统卡顿(加载时主…

累积局部效应 (ALE) 图分析记录

Git地址&#xff1a;https://github.com/blent-ai/ALEPython/tree/dev 查看源码需要pip install alepython安装&#xff0c;这边查看源码发现就实际就一个py文件而已&#xff0c;我懒得再去安装&#xff0c;故直接下载源码&#xff0c;调用方法也可&#xff1b; # -*- coding:…

浅谈网络 | 应用层之HTTP协议

目录 HTTP 请求的准备HTTP 请求的构建HTTP 请求的发送过程HTTP 返回的构建HTTP 2.0QUIC 协议HTTP 3.0 在讲完传输层之后&#xff0c;我们接下来进入应用层的内容。应用层的协议种类繁多&#xff0c;那从哪里开始讲起呢&#xff1f;不妨从我们最常用、最熟悉的 HTTP 协议 开始。…

qt5.14.2跟vs2022配置

1.qt6要在线安装&#xff0c;安装时间比较长&#xff0c;要求网络要稳定&#xff0c;不适合快速安装 2.使用qt5.14.2离线安装包&#xff0c;安装速度快&#xff0c;可以快速安装。 3.安装完qt.5.14.2后打开QtCreate4.0.1&#xff0c;打开 工具->选项->Kits,发现如下图: 没…

华为海思2025届校招笔试面试经验分享

目前如果秋招还没有offer的同学&#xff0c;可以赶紧投递下面这些公司&#xff0c;都在补招。争取大家年前就把后端offer拿下。如果大家在准备秋招补录取过程中有任何问题&#xff0c;都可以私信小编&#xff0c;免费提供帮助。如果还有部分准备备战春招的同学&#xff0c;也可…

超详细ensp配置VRRP和MSTP协议

一、简介 1、什么是VRRP&#xff1a; &#xff08;1&#xff09;VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;的概念&#xff1a; VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;指的是一种实现路由器冗余备份的协议&#xff0c;常用于…

linux基础2

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

SAAS美容美发系统架构解析

随着技术的不断发展&#xff0c;SAAS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;模式在各个行业的应用逐渐深化&#xff0c;美容美发行业也不例外。传统的美容美发店面通常依赖纸质记录、手动操作和复杂的管理流程&#xff0c;而随着SAAS平台的出现&…

和数集团业务说明会(南京站)顺利举办

2024年11月24日&#xff0c;上海和数集团业务说明会&#xff08;南京站&#xff09;&#xff0c;在南京希尔顿酒店成功举办。 和数集团董事长兼总经理唐毅先生&#xff0c;以其敏锐的行业洞察力和丰富的实践经验&#xff0c;向与会者分享了和数集团在区块链领域的丰厚研究成果和…

微积分复习笔记 Calculus Volume 1 - 6.9 Calculus of the Hyperbolic Functions

6.9 Calculus of the Hyperbolic Functions - Calculus Volume 1 | OpenStax

MCU跨领域融合的风向标是什么?

【哔哥哔特导读】从市场竞争的加剧到技术发展的需求&#xff0c;从智能化趋势到安全性要求的提高&#xff0c;再到市场需求的变化&#xff0c;这些因素共同推动了MCU趋势的发展&#xff0c;那么&#xff0c;当前的发展方向是怎样的&#xff1f; 随着技术的飞速发展和市场需求的…

使用ENSP实现OSPF

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为2…

1、Three.js开端准备环境

准备工作 从 CDN 导入 1.安装 VSCode 2.安装 Node.js 3.查看Three.js最新版本 4.如何cdn引入&#xff1a; https://cdn.jsdelivr.net/npm/threev版本号/build/three.module.js 例如&#xff1a;https://cdn.jsdelivr.net/npm/threev0.170.0/build/three.module.js 我们需要…

【HTTP】http与https

http与https的关系 应用层协议&#xff1a; http&#xff08;HyperText Transfer Protocol&#xff09;超文本传输协议&#xff1b; https&#xff08;Hypertext Transfer Protocol Secure&#xff09;超文本传输安全协议&#xff1b; 传输层协议&#xff1a;TCP&#xff08;Tr…

百度 文心一言 vs 阿里 通义千问 哪个好?

背景介绍&#xff1a; 在当前的人工智能领域&#xff0c;随着大模型技术的快速发展&#xff0c;市场上涌现出了众多的大规模语言模型。然而&#xff0c;由于缺乏统一且权威的评估标准&#xff0c;很多关于这些模型能力的文章往往基于主观测试或自行设定的排行榜来评价模型性能…

MySQL聚合查询分组查询联合查询

#对应代码练习 -- 创建考试成绩表 DROP TABLE IF EXISTS exam; CREATE TABLE exam ( id bigint, name VARCHAR(20), chinese DECIMAL(3,1), math DECIMAL(3,1), english DECIMAL(3,1) ); -- 插入测试数据 INSERT INTO exam (id,name, chinese, math, engli…

python学习笔记1

首先&#xff0c;想要学习一个东西&#xff0c;要弄清楚他是做什么的。需要用什么东西去完成他。 python是一种解释型编辑语言&#xff0c;类似于百度搜索引擎&#xff0c;主要目的是搜集资料和整理资料。 了解到这个目的之后&#xff0c;pytohon的学习和使用就简单很多。 第一…

15 go语言(golang) - 并发编程goroutine原理及数据安全

底层原理 Go 的 goroutine 是一种轻量级的线程实现&#xff0c;允许我们在程序中并发地执行函数。与传统的操作系统线程相比&#xff0c;goroutine 更加高效和易于使用。 轻量级调度 用户态调度&#xff1a;Go 运行时提供了自己的调度器&#xff0c;这意味着 goroutine 的创建…

dmdba用户资源限制ulimit -a 部分配置未生效

dmdba用户资源限制ulimit -a 部分配置未生效 1 环境介绍2 数据库实例日志报错2.1 mpp01 实例日志报错2.2 mpp02 实例日志报错 3 mpp02 服务器资源限制情况4 关闭SELinux 问题解决4.1 临时关闭 SELinux4.2 永久关闭 SELinux 5 达梦数据库学习使用列表 1 环境介绍 Cpu x86 Os Ce…