在 .NET 6.0 中创建用于 CRUD 操作的 Web API

快速概述:
在动态的技术世界中,创建强大的 Web API 已成为开发人员不可或缺的关键技能。这些 API 是促进不同应用程序之间顺畅通信的重要链接,可实现无缝数据检索和操作。本文的重点是在 .NET 6 中为 CRUD 操作创建 Web API。

为了实现这一点,我们将利用 .NET 6.0 的强大功能,这是科技巨头微软提供的先进且尖端的框架。在开始这段旅程之前,让我们确保全面了解 .NET 6 Web API 最佳实践究竟包含哪些内容。因此,让我们从对其进行详细探索开始。 

什么是 .NET 6 Web API?

NET 6  Web API 是一个先进的框架,一个精心设计的创新框架,用于构建针对 Web 应用程序个性化的弹性应用程序编程接口。ASP.NET Core 为 dotnet 6 提供了基础,它提供了高性能和跨平台功能,使其成为现代 Web 开发的理想选择。

从早期版本过渡而来,.NET 6 Web API 引入了重大改进,提高了开发人员的效率和生产力。借助 dotnet 6,开发人员可以享受热重载功能,该功能使他们可以立即应用代码更改,而无需在开发过程中重新启动应用程序。它还具有强大的诊断和测试工具,可快速解决问题,促进团队合作并提高代码质量。 

此外,您可以控制 API CRUD 操作,并通过授权和身份验证实施来保护您的数据。

Web 服务中的 CRUD 是什么?

CRUD 是创建、读取、更新和删除的首字母缩写词。它说明了可以对数据执行的四个主要操作:

  • 创建或 C:向数据库添加新数据或记录。
  • 读取或 R:从数据库中检索或获取现有数据。
  • 更新或 U:修改数据库中现有数据。
  • 删除或 D:从数据库中删除数据。

这些操作代表通过 Web API 与存储在数据库或数据源中的数据交互所需的基本功能。

什么是 Get、Post、Put 和 Delete 方法?

在.NET 开发中,要与服务器交互,通常使用的 HTTP 方法是 GET、POST、PUT 和 DELETE。它们对于传输和检索数据至关重要。在讨论 CRUD 和 HTTP 方法之间的差异之前,了解每种方法的具体情况至关重要。

  • 获取:从 Web 服务器检索数据。
  • Post:将数据提交到 Web 服务器上的特定资源进行处理。
  • 放入:用新信息更新或替换服务器上的现有数据。
  • 删除:从 Web 服务器中删除特定资源。

CRUD 与 Get Post Put Delete (HTTP 方法)

CRUD 和 HTTP 方法的主要区别在于它们的范围和目的:

CRUD 是一个更高级别的概念,表示管理应用程序或系统内数据的四种基本操作。相比之下,HTTP 方法是在 Web API 和 Web 服务环境中执行这些 CRUD 操作的具体方式。

通俗地说,CRUD 是一个说明数据管理操作的一般概念,而 HTTP 方法解释了如何在 Web API 上下文中执行这些操作。

在 .NET 6 中使用 ASP.NET Core 构建 Web API 的七个步骤

在使用 .NET 6 中的 ASP.NET 核心构建 Web API 之前,请确保已安装所有以下必需的工具和技术:

  • Visual Studio 2022:确认您的机器已安装最新版本的 Visual Studio 2022。这个强大的开发环境支持 .NET 6 开发,提供无缝高效的编码体验。
  • .NET SDK 6.0:安装 .NET SDK 6.0 或更高版本;它保留了构建强大的 Web API 所需的工具和库。
  • SQL Server:确保您可以访问 SQL Server 数据库,因为它将成为 Web API 数据的存储和管理中心。设置 SQL Server 数据库对于成功处理和检索应用程序中的数据至关重要。

步骤 1:启动新项目

按照以下步骤创建一个新项目:

  • 单击任务栏上的“搜索”按钮。
  • 键入Visual Studio并按Enter
  • 将出现Visual Studio窗口。
  • 单击“创建新项目”
  • 选择ASP.NET Core Web API作为项目类型。
  • 单击“下一步”
  • 项目名称字段中,输入项目的名称(CRUD_Project)。
  • 位置字段中,输入保存项目的位置。
  • 单击“下一步”
  • 框架列表中,选择.Net 6.0 (长期支持)
  • 身份验证类型列表中,选择.Net 6.0 (长期支持)
  • 在Docker OS部分下,验证使用控制器(取消选中以使用最少 API)启用 OpenAPI 支持选项前面的复选框是否被选中。
  • 单击“创建”

第 2 步:安装 Microsoft.EntityFrameworkCore.Tools 和 Microsoft.EntityFrameworkCore.SqlServer – (NuGet 包)

按照以下步骤安装.Tools包:

  • Visual Studio窗口中,右键单击“Dependencies”
  • 选择管理 NuGet 包
  • 选择“浏览”选项卡。
  • 键入Microsoft.EntityFrameworkCore.Tools并按Enter
  • 安装最新版本。
  • 现在,以相同的方式添加(安装).SqlServer包。

步骤 3:在 SQL 中创建新数据库

按照以下步骤在 SQL 中创建一个新的数据库:

  • 创建一个名为CRUD_DB的新 SQL 数据库(如果需要,您可以选择其他名称)。
  • 执行脚本在 CRUD_DB 数据库中创建产品表。

步骤 4:创建数据库上下文和模型

按照下面提到的步骤,在 ASP.NET Core Web API 项目中使用数据库优先方法在 SQL 中构建一个新数据库:

  • 单击任务栏上的“搜索”按钮。
  • 键入Visual Studio并按Enter
  • 将出现Visual Studio窗口。
  • 工具列表中,选择NuGet 包管理器,然后单击包管理器控制台
  • 将出现“包管理器控制台”窗口。
  • 键入“ Scaffold-DbContext “Server=SERVERNAME;Database=CRUD_DB;Integrated Security=True” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models ”。 (将 CRUD_DB 替换为您的数据库服务器名称)
  • Enter
附加信息:

执行该命令后,将在项目解决方案中创建 Model 文件夹,其中包含两个基本文件:ProductDBContext.cs 和 Product.cs。ProductDBContext.cs 文件处理数据库交互,而 Product.cs 则用作表示数据库中“Products”表结构的模型。

为了保持代码库的简洁高效,建议从 ProductDBContext.cs 中删除 OnConfiguring() 方法,因为它包含数据库连接字符串,为了更好地组织,应该以不同的方式管理它。相反,连接字符串将添加到 appsettings.json 文件中。此外,将删除同一文件中的 ProductDBContext() 构造函数,以增强代码的简单性和性能。这些调整有助于组织良好的项目,遵循.NET Core开发的最佳实践。

步骤 5:设置数据库连接

按照以下步骤设置 DB 连接:

  • 打开appsettings.json文件。
  • 插入所需的数据库连接字符串
  • 将servername替换为您的数据库服务器的名称。
  • 使用Program.cs文件中的连接字符串配置数据库连接。
更新 Program.cs

为了适应 .NET 6 中引入的更改,现在在 Program.cs 文件中进行了配置调整,因为 Startup.cs 不再用于配置。在 Program.cs 中包含以下几行:

var connectionString = builder.Configuration.GetConnectionString("ProductDB");
builder.Services.AddDbContextPool(option => option.UseSqlServer(ConnectionStrong)); 

不要忘记在 Program.cs 文件的顶部包含必要的“using”语句以启用所需的功能。 

USING Microsoft.EntityFrameworkCore;
USING ProductAPI.Models; 

步骤 6:插入产品控制器

按照以下步骤插入产品控制器:

  • 解决方案资源管理器中,右键单击“控制器”文件夹。
  • 选择添加,然后单击控制器
  • 将出现“添加控制器”对话框。
  • 控制器名称字段中输入名称。(CRUD_CONTROLLER)
  • 模板列表中,选择空 API 控制器
  • 单击“添加”

步骤 7:在 ProductsController.cs 中添加方法

在 ProductsController.cs 文件中,我们将整合必要的端点以完成四个主要的 CRUD 操作:GET、POST、PUT 和 DELETE。这些端点支持与 API 进行通信并有效地处理数据。您可以在 ProductsController.cs 文件中使用提供的代码片段来实现这些功能。通过这样做,您将能够在“Products”表上执行“n”个 CRUD 操作,并确保在您的 Web API 中无缝处理数据。

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using ProductCRUDAPI.Models;namespace ProductCRUDAPI.Controllers
{[Route("api/[controller]")][ApiController]public class ProductsController : ControllerBase{private readonly ProductDBContext _context;public ProductsController(ProductDBContext context){_context = context;}[HttpGet]public async Task<IEnumerable<Product>> Get(){return await _context.Products.ToListAsync();}[HttpGet("{id}")]public async Task<IActionResult> Get(int id){if (id < 1)return BadRequest();var product = await _context.Products.FirstOrDefaultAsync(m => m.Id == id);if (product == null)return NotFound();return Ok(product);}[HttpPost]public async Task<IActionResult> Post(Product product){_context.Add(product);await _context.SaveChangesAsync();return Ok();}[HttpPut]public async Task<IActionResult> Put(Product productData){if (productData == null || productData.Id == 0)return BadRequest();var product = await _context.Products.FindAsync(productData.Id);if (product == null)return NotFound();product.Name = productData.Name;product.Description = productData.Description;product.Price = productData.Price;await _context.SaveChangesAsync();return Ok();}[HttpDelete("{id}")]public async Task<IActionResult> Delete(int id){if (id < 1)return BadRequest();var product = await _context.Products.FindAsync(id);if (product == null) return NotFound();_context.Products.Remove(product);await _context.SaveChangesAsync();return Ok();}}
}

步骤 8:启动 Web API

按照以下步骤启动 Web API:

  • Visual Studio中按F5启动Web API
  • 在Chrome中打开一个新标签页。
  • 在 URL 栏中,输入“ https://localhost:{port}/swagger/index.html。 ”(将“{ port }”替换为 API 正在运行的实际端口号)。
  • 测试您的CRUD Web API的功能。

结论

我希望一切都清楚,并且您可以轻松地使用 .NET 6.0 创建 CRUD Web API。如果你喜欢此文章请点赞、收藏,如果不喜欢你可以评论、建议。祝你有美好的一天。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

lua 编译网路核心

下载 Severity Code Description Project File Line Suppression State Details Error LNK1104 cannot open file lua53.lib mime D:\MyWork\lua\luasocket-master\luasocket-master\LINK 1 2> Creating library Release\soc…

SystemC学习(4)— 在VCS中运行SystemC

SystemC学习&#xff08;4&#xff09;— 在VCS中运行SystemC 一、前言 参考&#xff1a;VCS编译verilog&SystemC 二、仅包含SystemC的仿真 源文件使用上一篇&#xff1a;SystemC学习&#xff08;3&#xff09;— APB_SRAM的建模与测试 编写makefile如下所示&#xff…

Qt第三课 ----------布局

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

MySQL本地安装及密码重置常见错误处理

文章目录 一、MySQL下载二、配置环境变量三、MySQL初始化1.初始化MySQL数据库2.安装MySQL服务3.启动MySQL服务 四、密码重置 一、MySQL下载 官网地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.5.html#downloads 下载完成后&#xff0c;直接解压缩到D盘 二、配置…

TBB开启并行编程之旅

本文基于小彭老师TBB课程&#xff0c;并对部分晦涩知识添加了更详细的解释与示例 第0章&#xff1a;从并发到并行 停滞的摩尔定律 你醒啦&#xff1f;免费午餐结束了&#xff01; 摩尔定律具体内容我们就不再提&#xff0c;从上图可以看到晶体管的密度的确仍在指数增长&…

「QT」几何数据类 之 QPointF 浮点型点类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

青藤深度参编的终端安全国家标准正式发布

近日&#xff0c;国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告&#xff0c;由TC260&#xff08;全国网络安全标准化技术委员会&#xff09;归口&#xff0c;公安部第三研究所牵头的GB/T 29240-2024《网络安全技术 终端计算机通用安全技术规范》&…

[极客大挑战 2019]Secret File 1

[极客大挑战 2019]Secret File 1 审题 看到题目应该是一道简单的按照要求找flag的题目 知识点 跟着题目走 解题 一&#xff0c;查看源码 找到网站进入 点开发现 【注意它说没看清吗】 二&#xff0c;使用BP抓包试试 发现新出现了/action.php 抓到后放到Repeater中响应 得…

Day41 | 动态规划 :完全背包应用 完全平方数单词拆分(类比爬楼梯)

Day41 | 动态规划 &#xff1a;完全背包应用 完全平方数&&单词拆分&#xff08;类比爬楼梯&#xff09; 动态规划应该如何学习&#xff1f;-CSDN博客 01背包模板 | 学习总结-CSDN博客 完全背包模板总结-CSDN博客 难点&#xff1a; 代码都不难写&#xff0c;如何想…

ELK-Kibana配置

文章目录 一、什么是Kibana、有什么用&#xff1f;二、Kibana的安装与基本配置1. 下载Kibana安装包2. 解压安装包3. 修改Kibana配置文件4. 添加用户目录权限5. 启动Kibana6. 访问Kibana 三、Kibana的使用Index pattern的配置查看收集到的数据画图 一、什么是Kibana、有什么用&a…

kdump 应该怎么安装 linux-crashdump kdump-tools

sudo apt install linux-crashdump sudo apt install crash sudo apt install kdump-tools 1. 两个工具的关系 linux-crashdump kdump-tools 在 Ubuntu 上安装 kdump 功能&#xff0c;这两个包都是相关的&#xff0c;但有不同的作用. linux-crashdump 是一个元包&#xff08;…

pdf转excel;pdf中表格提取

一、问题描述 在工作中或多或少会遇到&#xff1a;需要将某份pdf中的表格数据提取出来&#xff0c;以便能够“修改使用”数据 可将pdf中的表格提取出来&#xff0c;解决办法还有点复杂 尤其涉及“pdf中表格不是标准的单元格”的时候&#xff0c;提取数据到excel不太容易 比…

ElasticSearch备考 -- 集群配置常见问题

一、集群开启xpack安全配置后无法启动 在配置文件中增加 xpack.security.enabled: true 后无法启动&#xff0c;日志中提示如下 Transport SSL must be enabled if security is enabled. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security b…

qt配合映美精取图开发

最近开发一个项目&#xff0c;用映美精相机配合halcon做取图开发&#xff0c;由于网上资料小特意写个记录。到映美精官网下载驱动&#xff0c;映美精官网&#xff0c;下载映美精的工具开发包SDK 映美精的SDK下载SDK后找到classlib文件夹 里面就是SDK新建一个qt程序&#xff0c…

springboot yml文件数据源出现警告/报黄/数据库配置警告问题

1、看一下数据源的依赖是不是都引入完整了 2、看一下数据源是否有拼写错误 上图就是数据源拼写错误

手机上用什么方法可以切换ip

手机上用什么方法可以切换IP&#xff1f;在某些特定情境下&#xff0c;用户可能需要切换手机的IP地址&#xff0c;以满足网络安全、隐私保护或绕过地域限制等需求。下面以华为手机为例&#xff0c;将详细介绍手机IP地址切换的几种方法&#xff0c;帮助用户轻松实现这一目标。 一…

python可视化将多张图整合到一起(画布)

这周有点事忙着&#xff0c;没时间重温刚结束的Mathurcup数学建模&#xff0c;这两天也是再看了下&#xff0c;论文还是赶紧挺烂的&#xff0c;但比国赛又有进步&#xff08;说起国赛又不得不抱怨了&#xff0c;基本其余省份都发了&#xff0c;但江西......哎&#xff09;。哎&…

vue2,vue3,uniapp,小程序实现前端url生成二维码

最近遇到一个项目&#xff0c;api返回url地址&#xff0c;前端通过地址生成二维码。 话不多说直接上代码&#xff0c;亲测有效&#xff0c;希望能帮助大家&#xff0c;同时如果有更好的方法希望大家能够分享 1、第一步&#xff0c;在项目的utils文件夹下面创建一个weapp-qrco…

【韩老师零基础30天学会Java】01章

什么是程序&#xff1f; JavaEE企业版 示例1 public class Test{public static void main(String[] args){int res11;System.out.println("result"res);}}D:\Java\code>javac Test.javaD:\Java\code>java Test 缁撴灉2D:\Java\code>javac Test.javaD:\Java…

华为交换机实现不同VLAN内的互通配置(汇聚层设备作为网关)

背景如下&#xff1a; 如下图所示&#xff0c;PC1和PC2分别属于VLAN 2和VLAN 3&#xff0c;通过接入层设备DeviceB接入汇聚层设备DeviceA。PC3属于VLAN 4&#xff0c;通过接入层设备DeviceC接入汇聚层设备DeviceA。DeviceC不做任何配置&#xff0c;当做HUB即插即用。汇聚层设备…