WEB API 与 MVC的异同javascript
WEB API和MVC同样具备一样的设计模式,路由概念,绑定模型,验证等。他和传统的WEB应用程序不一样的是MVC的视图部分。它返回JSON或者XML数据,而不是返回HTML,客户端应用程序使用这些数据控制他们的行为或者更新UI。html
传统的WEB应用程序用户在浏览浏览器时,服务器经过HTML返回用户的请求。通常使用MVC的中间件Razor模板生成HTML。可是现代应用程序的开发人员也有许多其它的可能性来考虑。java
WEB API 使用于哪些实际场景json
SPAs(Client-side single-page applications)客户端单页应用程序在这几年变得很是流行。好比Angular,React, Ember,这些框架使用在用户的WEB浏览器中运行的 javascript 来生成他们看到的 html,并与之互动。当用户第一次使用应用程序时,服务器发送初始化的JavaScript代码给浏览器。在从服务器加载任何应用程序数据以前,用户的浏览器加载 javascript 并初始化SPA。
加载SPA 后, 与服务器的通讯仍经过 http 进行, 但服务器端应用程序不会直接向浏览器发送 html 以响应请求, 而是将数据 (一般采用 json 或 xml 等格式) 发送到客户端应用程序。而后SPA分析数据并生成适当的 html向用户显示。
服务器端应用程序存在终结点,客户端与终节点通讯时称为 WEB API。后端
不一样客户端请求服务的方式设计模式
WEB API 的优点api
现代开发者须要考虑许多不一样的应用程序的消费者。好比出传统的浏览器应用程序,或者SPA,移动应用程序或者其余应用程序。WEB API 公开了许多可用于访问的URL或更改服务器上的数据。它一般使用 HTTP 进行访问。
使用 WEB API的最大的优点之一是, 它能够做为一个通用的为您的全部应用程序提供后端。例如, 能够首先构建使用 WEB API 的客户端应用程序。稍后, 您能够添加使用相同的 WEB API, 几乎不须要或根本不须要对ASP .NET Core核心代码进行修改。
最后无论是使用.NET Core MVC仍是.NET Core WEB API构建WEB的应用程序,这些最终取决于你的我的喜爱。浏览器
返回原始的.NET对象服务器
代码片断以下,返回了.NET的string类型集合:app
[Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { // GET api/values [HttpGet] public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } }
返回结果以下图:
返回IActionResult做为一个StatusCodeResult
代码片断以下:
[HttpGet("{id}")] public ActionResult<string> Get(int id) { if (id > 0) { return Ok(id); } return NotFound(); }
返回结果以下图:
成功结果截图:
失败结果截图:
请求模型流程
设置默认启动控制器
在ASP.NET Core WEB API项目中的launchSettings.json文件中设置,结果以下图所示:
指定控制器的访问方式
代码片断以下:
[Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { [Route("GetAllValues")] [Route("GetTodayValues")] [Route("GetNowValues")] public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } }
如下访问地址均可以访问到Get方法:
https://localhost:5001/api/values/GetAllValues
https://localhost:5001/api/values/ GetTodayValues
https://localhost:5001/api/values/ GetNowValues
以下代码,方法的默认值就是20:
[Route("GetNew/{speed=20}")] public string GetCurrentValue(int speed) { return speed.ToString(); }
Web API中处理Get和Post请求
Get:获取请求列表,Post:建立一个新的请求。使用HttpGet和HttpPost特性,代码片断以下:
[Route("api/[controller]")] [ApiController] public class AppointmentController : ControllerBase { public IEnumerable<string> Index() { return new string[] { "value1Test", "value2Test" }; } [HttpGet("ListApp")] public IActionResult ListAppointments() { return Ok("Get请求"); } [HttpPost("GetApp")] public IActionResult CreateAppointment() { return Ok("Post请求"); } }