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就是二级路径即接口类型中的路径 ;

完整代码:

cs 复制代码
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:传入的是主题参数,当然也可以传入个体参数;

cs 复制代码
        [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](https://so.csdn.net/so/search?q=HttpPost&spm=1001.2101.3001.7020 "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请求)

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

相关推荐
Csvn12 小时前
OpenSpec 详细使用教程
前端
明月_清风12 小时前
加密解密系统完全指南:原理剖析与 Go 实践
后端
之歆13 小时前
Day19_LESS 完全指南——从入门到工程实践
前端·css·less
小江的记录本13 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
云水一下14 小时前
HTML5 从入门到精通:实战收官——从零搭建完整静态网站,综合运用所有知识
前端·html5
不总是14 小时前
Windows 系统 Node.js 免安装版(zip)安装与配置教程(2026 最新)
前端·windows·node.js
冬奇Lab14 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
zhangyao94033015 小时前
开发pc端时,表格的高度怎么设置才能铺满页面
前端·javascript·elementui
ServBay15 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
后端·aigc·ai编程
小江的记录本15 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试