ASP.NET Core 开发 Web API

2. Web Api 的创建与Http类型的介绍

2.1 ASP.Net Core Web API项目的创建

1.创建ASP.NET Core Web API项目
从“文件”菜单中选择“新建”“项目”。
在搜索框中输入“Web API”。
选择“ASP.NET Core Web API”模板,然后选择“下一步”。
在“配置新项目”对话框中,将项目命名为“TodoApi”,然后选择“下一步”。
在“其他信息”对话框中:
确认“框架”为“.NET 6.0 (长期支持)”。
确认已选中“使用控制器(取消选中以使用最小 API)”。
选择“创建”。
 

~~~~~~~~~

1. Web Api 程序包引用
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。

EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:

使 .NET 开发人员能够使用 .NET 对象处理数据库。
无需再像通常那样编写大部分数据访问代码。


准备工作:

1.创建项目:打开Visual Studio2022,选择ASP.NET Core Web应用空项目基于.Net6 创建
2.安装Nuet程序包——项目——依赖项——管理NuGet程序包(版本等级尽量一样)

Microsoft.EntityFrameworkCore.SqlServer (适用于EF Core SQL Server 提供程序)
Microsoft.EntityFrameworkCore.Design(适用于EF Core .NET Core CLI 工具 )
Microsoft.EntityFrameworkCore.Tools(适用于 EF Core 的包管理器控制台工具)

Microsoft.EntityFrameworkCore.Design
 

2. 导入项目所需 NuGet 包

2.1 添加 NuGet 包

2.2搜索安装所需的 NuGet 包

Microsoft.EntityFrameworkCore.SqlServer (适用于EF Core SQL Server 提供程序)
Microsoft.EntityFrameworkCore.Design(适用于EF Core .NET Core CLI 工具 )
Microsoft.EntityFrameworkCore.Tools(适用于 EF Core 的包管理器控制台工具)

Microsoft.EntityFrameworkCore

此项本次未安装

2. Web Api 的创建与Http类型的介绍

2.1 ASP.Net Core Web API项目的创建

1.通过vs建立一个ASP.Net Core Web API项目;(如果没有在搜索模板中找到它,就将模板栏滑动到最后,点击蓝色字体安装多个工具和功能),然后选中如图2所示2,再安装。

2 .2  API接口的创建

生成项目后,解决方案会自动生成 Controllers 文件夹,里面存放的就是接口;

创建:

需要注意得是:命名方法一般为 名字+后缀 Controller;(不影响接口的名字,还是前部分样式) 最大字体为接口名称

创建方式:

1.创建 API控制器

        点击文件夹右键添加 控制器 选则 通用API Api控制器,之后生成如下二代码,此时的接口还是不能用的;

2.需要声明接口 [ApiController]  和一级接口路径[Route("Test")]

        (声明接口是必须的,声明接口路径最好还是带上--可以起个和接口名一样的路径好用);

3.正式定义接口和接口类型;

        在这里直介绍[HttpGet("getUsers")]和[HttpPost("getUsers")]两种接口类型 格式:接口类型+方法

注意:接口类型()中填写的是二级路径(自定义),效果如上白蓝色图 蓝色GET 是类型,Test一级路径 getUser就是二级路径即接口类型中的路径  ;

完整代码:
 

using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;namespace WebApplication1.Controllers
{[ApiController] //声明是一个API接口[Route("Test")] //路由:api接口的路径public class TestController : Controller{/// <summary>/// 获取所有人员数据/// </summary>/// <returns></returns>[HttpGet("getUsers")]public List<User> GetUsers(){List<User> list = UserManager.CreateUsers();return list;}}
}

2.3 HttpGet和HttpPost类型的区别

1.传入参数不同

HttpGet:传入个体基本类型 如:(int,string 可传多个);

HttpPost:传入的是主题参数,当然也可以传入个体参数;

        [HttpGet("getUserById")]public User GetUserById(int id){return UserManager.GetUserById(id);}//User 是一个内容[HttpPost("add")]public User Add(User user){//List<User> users = new List<User>();return UserManager.Add(user);}

2.HttpGet接口执行后 返回的 Request URL路径可以在通过浏览器打开,如下图:

执行的就是get 网址,和执行效果图 图一相对应

5.构建控制器进行测试
1.创建控制器

右键单击 Controllers 文件夹。

选择“添加”“新建构建项”。

选择“其操作使用实体框架的 API 控制器”,然后选择“添加” 。

在“添加其操作使用实体框架的 API 控制器”对话框中:

在“模型类”中选择“TodoItem (TodoApi.)”。
在“数据上下文类”中选择“TodoContext (TodoApi.)”。
选择“添加”。

二.ASP.NET Core 开发 Web API

控制器类WeatherForecastController.cs 继承自ControllerBase类。我们注意到ASP.NET Core MVC项目中的控制器类继承自Controller类,Controller是ControllerBase类的子类。Controller类中包含View等和MVC中的视图等相关的代码,因此我们在编写Web API 的时候,控制器类一般不需要继承自Controller。
 

在WeatherForecastController.cs类中加入[Route("[controller]/[action])"]表示访问的路径

在方法中前边加入[HttpGet]或者[HttpPost]等等表示可以处理Get或者Post请求了,在WeatherForecastController新增加了一个方法SaveNote方法这个方法把用户提交的内存保存到文本文件中,(方法的返回值为保存的文件名)

对于Web API参数的传递建议如下:

对于保存、更新类的请求一般都是使用POST、PUT请求,把全部参数都放到请求报文体中;
对于DELETE请求,要传递的参数就是一个资源的ID,因此把参数放到QueryString中即可;
对于GET请求,一般参数的内容都不会太长,因此统一通过QueryString传递参数就可以;
当然对于极少数参数内容超过URL限制的请求,由于GET、PUT请求都是幂等的,因此把请求改成通过PUT请求,然后通过报文体来传递参数
 
 

四. Core WebApi 接收前端传过来的数据
  Content-Type:application/json的数据:前端对json数据进行JSON.stringify()序列化,后台直接用对应的实体类或者list集合直接接收(或者用[FromBody] string value接收,接收后反序列化:一般不这么做)(post请求)

  Content-Type:text/plain 数据:[FromForm]实体类获取,或者直接[FromForm] 普通数据类型获取。(post请求)

  另外,如果是实体类接收前端参数,实体类前需要加[FromQuery]或者[FromHeader](get请求)

  注意:无论实体类方式接收还是普通数据类型参数接受数据,都必须保证前后端字段名一致(不讨论特殊情况)。
 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab高斯消元法求解线性方程组

高斯消元法的基本原理是通过一系列行变换将线性方程组的增广矩阵转化为简化行阶梯形式&#xff0c;从而得到方程组的解。其核心思想是利用矩阵的行变换操作&#xff0c;逐步消除未知数的系数&#xff0c;使得方程组的求解变得更加简单。 首先&#xff0c;给定系数矩阵A和常数向…

怎么防止重要文件夹丢失?文件夹安全如何保护?

我们在使用电脑的过程中&#xff0c;会将重要数据放在文件夹中&#xff0c;那么&#xff0c;我们该怎么防止重要文件夹丢失呢&#xff1f;下面我们就一起来了解一下。 EFS加密 EFS加密可以对于NTFS卷上的文件夹进行加密&#xff0c;加密后的文件夹将只允许加密时登录系统的用户…

基于卷积神经网络的法线贴图生成器

在本文中&#xff0c;我们将学习如何训练卷积神经网络从彩色图像生成法线贴图。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 1、数据和工具 我们正着手训练神经网络从彩色图像生成法线贴图。 我们将以“成对”的方式做到这一点。 这意味着我们将显示相应图像的网络对…

SpringCloud学习笔记-Ribbon负载均衡

目录 1.负载均衡策略2.自定义负载均衡策略3.饥饿加载 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了RestTemplate发出的请求&#xff0c;对地址做了修改。用一幅图来总结一下&#xff1a; 基本流程如下&#xff1a; 拦截我们的RestTemplate请求http://userserv…

【AI视野·今日Sound 声学论文速览 第八期】Wed, 20 Sep 2023

AI视野今日CS.Sound 声学论文速览 Wed, 20 Sep 2023 Totally 1 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Accelerating Diffusion-Based Text-to-Audio Generation with Consistency Distillation Authors Yatong Bai, Trung Dang, Dung Tran, K…

Yolov7改进--添加注意力机制

改进参考魔鬼导师&#xff1a;YOLOV7改进-添加注意力机制_哔哩哔哩_bilibili 视频教程&#xff1a;YOLOV7改进-添加注意力机制_哔哩哔哩_bilibili GitHub改进项目地址&#xff1a;其中的cv_attentionGitHub - z1069614715/objectdetection_script: 一些关于目标检测的脚本的改…

【版本控制工具二】Git 和 Gitee 建立联系

文章目录 前言一、Git 和 Gitee 建立联系1.1 任意目录下&#xff0c;打开 git bash 命令行&#xff0c;输入以下命令生成公钥1.2 配置SSH公钥1.3 进行全局配置 二、其它相关Git指令2.1 常用指令2.2 指令操作可能出现的问题 三、补充3.1 **为什么要先commit&#xff0c;然后pull…

elasticsearch深度分页问题

一、深度分页方式from size es 默认采用的分页方式是 from size 的形式&#xff0c;在深度分页的情况下&#xff0c;这种使用方式效率是非常低的&#xff0c;比如我们执行如下查询 1 GET /student/student/_search 2 { 3 "query":{ 4 "match_all":…

死灰复燃!QakBot 恶意软件仍在运行中

2023 年 8 月&#xff0c;美国联邦调查局宣布&#xff0c;在名为“猎鸭行动”的国际执法活动中&#xff0c;成功拆除 Qakbot 僵尸网络&#xff08;Qakbot 也称 QBot、QuackBot 和 Pinkslipbot&#xff0c;自 2008 年以来一直非常活跃&#xff09;。然而 Security A ffairs 网站…

来单提醒/客户催单 ----苍穹外卖day9

来单提醒 需求分析 代码开发 注意:前端请求的并不是8080端口;而是先请求Nginx,Nginx进行反向代理以后转发到8080端口 这段代码首先创建了一个orders类用于更新订单状态 并且在更新状态后使用websocket发送给后端提醒 将信息放在map后,使用json的string化方式传给一个接收对象,…

计算机网络笔记3 数据链路层

计算机网络系列笔记目录&#x1f447; 计算机网络笔记6 应用层计算机网络笔记5 运输层计算机网络笔记4 网络层计算机网络笔记3 数据链路层计算机网络笔记2 物理层计算机网络笔记1 概述 文章前言 &#x1f497; 站在巨人的肩膀上&#xff0c;让知识的获得更加容易&#xff01…

Vue-1.8生命周期

Vue生命周期 一个Vue实例从创建到销毁的整个过程。 生命周期&#xff1a; 1&#xff09;创建&#xff1a;响应式数据 ->发送初始化渲染请求 2&#xff09;挂载&#xff1a;渲染数据->操作dom 3&#xff09;更新&#xff1a;数据修改&#xff0c;更新视图 4&#xf…

【Java】微服务——RabbitMQ消息队列(SpringAMQP实现五种消息模型)

目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比&#xff1a; 2.快速入门2.1.RabbitMQ消息模型2.4.1.publisher实现2.4.2.consumer实现 2.5.总结 3.SpringAMQP3.1.Basic Queue 简单队列模型3.1.1.消息发送3.1.2.消息接收3.1.3.测试 3.2.WorkQueue3.…

Excel·VBA使用ADO合并工作簿

之前文章《ExcelVBA合并工作簿&#xff08;7&#xff0c;合并子文件夹同名工作簿中同名工作表&#xff0c;纵向汇总数据&#xff09;》处理合并工作簿问题&#xff0c;代码运行速度比较慢 而《ExcelVBA使用ADO读取工作簿工作表数据》读取数据非常快&#xff0c;那么是否可以使用…

Unity中Shader光强与环境色

文章目录 前言一、实现下图中的小球接受环境光照实现思路&#xff1a;1、在Pass中使用前向渲染模式2、使用系统变量 _LightColor0 获取场景中的主平行灯 二、返回环境中主环境光的rgb固定a(亮度)&#xff0c;小球亮度还随之改变的原因三、获取Unity中的环境光的颜色1、Color模式…

k8s安全机制

安全机制 一、机制说明二、认证&#xff08;Authentication&#xff09;HTTP Token 认证HTTP Base 认证HTTPS 证书认证&#xff08;最严格&#xff09; 三、鉴权&#xff08;Authorization&#xff09;角色角色绑定主体&#xff08;subject&#xff09;Role and ClusterRoleRol…

体育场馆能源消耗监测管理平台,为场馆提供能源服务

随着能源问题的不断重视&#xff0c;体育场馆能源问题也被人们广泛的关注。为了让体育场馆的能源高效利用&#xff0c;体育场馆能源消耗监测管理平台应用而生。 该平台通过采集、监测场内数据&#xff0c;并对数据进行实时分析与反馈&#xff0c;从而帮助管理者了解到场内能源…

【Python】win安装

目录标题 下载目录安装步骤验证是否安装成功linux 、MacOs 安装 下载目录 https://www.python.org/downloads/ 安装步骤 验证是否安装成功 进入命令行&#xff0c;输入 &#xff1a; python 出现版本号即查看成功&#xff1a; linux 、MacOs 安装 Python 安装到 Linux 上…

Dubbo 环境隔离

通过标签实现流量隔离环境&#xff08;灰度、多套开发环境等&#xff09; 无论是在日常开发测试环境&#xff0c;还是在预发生产环境&#xff0c;我们经常都会遇到流量隔离环境的需求。 在日常开发中&#xff0c;为了避免开发测试过程中互相干扰&#xff0c;我们有搭建多套独…

Git 学习笔记 | Git 项目创建及克隆

Git 学习笔记 | Git 项目创建及克隆 Git 学习笔记 | Git 项目创建及克隆创建工作目录与常用指令本地仓库搭建克隆远程仓库 Git 学习笔记 | Git 项目创建及克隆 创建工作目录与常用指令 工作目录&#xff08;WorkSpace)一般就是你希望Git帮助你管理的文件夹&#xff0c;可以是…