提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:陈津勇|2019-11-05 10:26:16.323|阅读 879 次
概述:本文介绍了将Web API添加到现有ASP.NET Core应用程序的步骤。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
点击下方图片观看视频,然后继续像ASP.NET Core应用添加Web API支持。
Visual Studio 2019教程:将Web API添加到ASP.NET Core应用程序中
打开项目
在Visual Studio 2019中打开ASP.NET Core应用程序。该应用程序应该已经在使用EF Core来管理模型类型,如本教程系列的步骤3中所配置。
添加一个API控制器
右键单击该项目,然后添加一个名为Api的新文件夹。然后,右键单击此文件夹,然后选择Add > New Scaffolded Item。使用Entity Framework选择带有操作的API Controller。现在选择一个现有的模型类,然后单击Add。
查看生成的控制器
生成的代码包括一个新的控制器类。类定义的顶部是两个属性。
[Route("api/[controller]")] [ApiController] public class GamesController : ControllerBase
第一个指定这个控制器中动作的路由为api/[controller],这表示如果控制器名为GamesController,则路由为api/Games。
第二个属性[ApiController]向类添加了一些有用的验证,比如确保每个action方法都包含自己的[Route]属性。
public class GamesController : ControllerBase { private readonly AppDbContext _context; public GamesController(AppDbContext context) { _context = context; }
控制器使用现有的AppDbContext,并传递到其构造函数中。每个操作都将使用此字段来处理应用程序的数据。
// GET: api/Games [HttpGet] public IEnumerable<Game> GetGame() { return _context.Game; }
第一种方法是使用[HttpGet]属性指定的简单GET请求。它不带任何参数,并返回数据库中所有游戏的列表。
// GET: api/Games/5 [HttpGet("{id}")] public async Task<IActionResult> GetGame([FromRoute] int id) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var game = await _context.Game.FindAsync(id); if (game == null) { return NotFound(); } return Ok(game); }
下一个方法指定路由中的{id},它将被添加到/之后的路由中,因此完整的路由将类似于api/Games/5,如顶部的注释所示。该id输入被映射到方法上的id参数。在方法内部,如果模型无效,则返回一个BadRequest结果。否则,EF将尝试查找与提供的id匹配的记录。如果找不到,将返回NotFound结果,否则将返回相应的游戏记录。
// PUT: api/Games/5 [HttpPut("{id}")] public async Task<IActionResult> PutGame([FromRoute] int id, [FromBody] Game game) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != game.Id) { return BadRequest(); } _context.Entry(game).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!GameExists(id)) { return NotFound(); } else { throw; } } return NoContent(); }
接下来,使用[HttpPut]对API的请求来执行更新。新Game记录在请求的正文中提供。执行一些验证和错误检查,如果一切顺利,数据库中的记录将使用请求体中提供的值进行更新。否则,将返回适当的错误响应。
// POST: api/Games [HttpPost] public async Task<IActionResult> PostGame([FromBody] Game game) { if (!ModelState.IsValid) { return BadRequest(ModelState); } _context.Game.Add(game); await _context.SaveChangesAsync(); return CreatedAtAction("GetGame", new { id = game.Id }, game); }
一个[HttpPost]请求用于向系统添加新记录。与[HttpPut]一样,记录被添加到请求的正文中。如果有效,则EF Core将记录添加到数据库中,并且该操作将返回更新后的记录(带有数据库生成的ID)和一个指向API记录的链接。
// DELETE: api/Games/5 [HttpDelete("{id}")] public async Task<IActionResult> DeleteGame([FromRoute] int id) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var game = await _context.Game.FindAsync(id); if (game == null) { return NotFound(); } _context.Game.Remove(game); await _context.SaveChangesAsync(); return Ok(game); }
最后,[HttpDelete]使用带有ID 的路由来删除记录。如果请求有效,并且存在具有给定ID的记录,那么EF Core从数据库中将其删除。
添加Swagger
Swagger是一个API文档和测试工具,可以作为一组服务和中间件添加到ASP.NET Core应用程序中。要做到这一点,请先右键单击该项目,然后选择Manage NuGet Packages。单击Browse,搜索Swashbuckle.AspNetCore并安装相应的软件包。
安装后,打开Startup.cs并将以下内容添加到ConfigureServices方法的末尾:
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" }); });
同时,还需要在文件的顶部添加Swashbuckle.AspNetCore.Swagger。
接下来,在UseMvc之前,在Configure方法中添加以下内容:
// Enable middleware to serve generated Swagger as a JSON endpoint. app.UseSwagger(); // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), // specifying the Swagger JSON endpoint. app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); });
现在您应该能够构建和运行应用程序了。
在浏览器中,导航到/swagger地址栏中的,应该看到应用程序的API端点和模型的列表。
点击Games下的一个端点,尝试执行它,查看不同端点的行为。
以上就是本节教程的全部内容。下节教程将介绍如何将应用程序部署到Azure,欢迎继续关注!
*想要获得 Visual Studio 更多资源或正版授权的朋友,可以咨询了解哦~
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文将演示如何使用DevExpress WPF Grid控件实现列和带的固定,欢迎下载最新版组件体验!
在本文中,我们将探讨如何通过使用 JxBrowser 和 Quill.js 将现代富文本编辑器嵌入到 Java 桌面应用程序中,来克服 Swing、JavaFX 和 SWT 中内置编辑器的局限性。
Word 文档中的批注通常用于协作审阅和反馈。这些批注可能包含文本和图片,它们为文档改进提供了重要的参考信息。本文将演示如何使用 Spire.Doc for Java 在 Java 中提取 Word 文档中的批注文本和图片。
本文主要介绍如何使用DevExpress WinForms Data Grid组件实现列重新排序,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢