提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:陈津勇|2019-08-28 14:25:30.720|阅读 537 次
概述:本教程介绍了使用ASP.NET Core构建Web API的基础知识。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
在本教程中,您将学习如何:
创建一个Web API项目 | √ |
添加模型类和数据库上下文 | √ |
添加控制器 | √ |
添加CRUD方法 | √ |
配置路由和URL路径 | √ |
指定返回值 | √ |
使用Postman调用Web API | √ |
使用jQuery调用Web API | √ |
最后,您有一个Web API,可以管理存储在关系数据库中的“待办事项”。
本教程将创建以下API:
下图显示了应用程序的设计:
使用Visual Studio 2019创建Web项目
大家都知道,Visual Studio 2019具有ASP.NET和Web开发工作负载,那么如何使用VS 2019创建一个Web项目呢?只需以下四个步骤:
从文件菜单中,选择新建 > 项目。
选择ASP.NET Core Web Application模板,然后单击Next。
将项目命名为TodoApi,然后单击“ 创建”。
在“ 创建新的ASP.NET核心Web应用程序”对话框中,确认已选中.NET Core和ASP.NET Core 2.2。选择API模板,然后单击“ 创建”,不要选择启用Docker支持。
测试API
项目模板创建一个values API。从浏览器中调用Get方法来测试应用程序。
按Ctrl + F5运行该应用程序。Visual Studio启动浏览器并导航到//localhost:
如果出现一个对话框,询问您是否应该信任IIS Express证书,请选择“ 是”。在接下来出现的“ 安全警告”对话框中,选择“ 是”。
返回以下JSON:
["value1","value2"]
添加模型类
模型是一组表示应用程序管理的数据的类。这个应用程序的模型是一个单独的TodoItem类。
在解决方案资源管理器中,右键单击项目。选择添加 > 新建文件夹。将文件夹命名为Models。
右键单击Models文件夹,然后选择Add > Class。将类命名为TodoItem并选择Add。
使用以下代码替换模板代码:
namespace TodoApi.Models { public class TodoItem { public long Id { get; set; } public string Name { get; set; } public bool IsComplete { get; set; } } }
该Id属性用作关系数据库中的唯一键。
模型类可以在项目中的任何位置,但模型文件夹按惯例使用。
添加数据库上下文
该数据库上下文是协调实体框架功能的数据模型的主要类。该类是通过派生类创建的Microsoft.EntityFrameworkCore.DbContext。
右键单击Models文件夹,然后选择Add>Class,将类命名为TodoContext,然后单击“添加”。
使用以下代码替换模板代码:
using Microsoft.EntityFrameworkCore; namespace TodoApi.Models { public class TodoContext : DbContext { public TodoContext(DbContextOptions options) : base(options) { } public DbSet TodoItems { get; set; } } }
注册数据库上下文
在ASP.NET Core中,必须使用依赖注入(DI)容器注册DB上下文等服务。容器为控制器提供服务。
使用以下突出显示的代码更新Startup.cs:
// Unused usings removed using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using TodoApi.Models; namespace TodoApi { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the //container. public void ConfigureServices(IServiceCollection services) { services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); } // This method gets called by the runtime. Use this method to configure the HTTP //request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for // production scenarios, see //aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseMvc(); } } }
上面的代码:
删除未使用的using声明。
将数据库上下文添加到DI容器。
指定数据库上下文将使用内存数据库。
添加控制器
右键单击“控制器”文件夹。
选择添加>新项。
在“添加新项”对话框中,选择“API控制器类”模板。
将类命名为TodoController,然后选择Add。
使用以下代码替换模板代码:
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using TodoApi.Models; namespace TodoApi.Controllers { [Route("api/[controller]")] [ApiController] public class TodoController : ControllerBase { private readonly TodoContext _context; public TodoController(TodoContext context) { _context = context; if (_context.TodoItems.Count() == 0) { // Create a new TodoItem if collection is empty, // which means you can't delete all TodoItems. _context.TodoItems.Add(new TodoItem { Name = "Item1" }); _context.SaveChanges(); } } } }
上面的代码:
定义没有方法的API控制器类。
使用[ApiController]属性装饰类,此属性指示控制器响应Web API请求。
使用DI将数据库context(TodoContext)注入控制器,数据库上下文用于控制器中的每个CRUD方法。
如果数据库为空,则向数据库添加名为Item1的项。此代码位于构造函数中,因此每次有新的HTTP请求时它都会运行。如果删除所有项目,构造函数将在下一次调用API方法时再次创建Item1。所以当删除操作真正起作用的时候,它可能看起来并没有起作用。
添加Get方法
要提供检索待办事项的API,请将以下方法添加到TodoController类中:
// GET: api/Todo [HttpGet] public async Task GetTodoItems() { return await _context.TodoItems.ToListAsync(); } // GET: api/Todo/5 [HttpGet("{id}")] public async Task GetTodoItem(long id) { var todoItem = await _context.TodoItems.FindAsync(id); if (todoItem == null) { return NotFound(); } return todoItem; }
这些方法实现了两个GET端点:
GET /api/todo
GET /api/todo/{id}
如果应用程序还在运行,就停止它,然后再次运行,这样才能包含最新的更改。
通过从浏览器调用这两个端点来测试应用程序。例如:
//localhost:
//localhost:
调用GetTodoItems生成以下HTTP响应:
[ { "id": 1, "name": "Item1", "isComplete": false } ]
路由和URL路径
该[HttpGet]属性表示响应HTTP GET请求的方法。每个方法的URL路径构造如下:
从控制器的Route属性中的模板字符串开始:
namespace TodoApi.Controllers { [Route("api/[controller]")] [ApiController] public class TodoController : ControllerBase { private readonly TodoContext _context;
用控制器的名称替换[controller],按照惯例,控制器类名减去“controller”后缀。例如控制器类名是TodoController,因此控制器名是“todo”。ASP.NET核心路由不区分大小写。
如果[HttpGet]属性有一个路由模板(例如[HttpGet("products")]),则将其附加到路径。
在下面的GetTodoItem方法中,“{id}”是一个占位符变量,用于to-do项的唯一标识符。当调用GetTodoItem时,URL中的“{id}”值将提供给itsid参数。
// GET: api/Todo/5 [HttpGet("{id}")] public async Task GetTodoItem(long id) { var todoItem = await _context.TodoItems.FindAsync(id); if (todoItem == null) { return NotFound(); } return todoItem; }
*由于内容过多,本文分为上、下篇发布,若想了解更多,请点击如何使用ASP.NET Core创建Web API(下)查看。
想要了解 Visual Studio 更多资源的伙伴,请点这里。
想要获取 Visual Studio 正版授权的伙伴,
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢