.NET Core Web API理解

1.什么是WEB API什么时候该使用它

WEB API 与 MVC的异同

  WEB API和MVC一样具有同样的设计模式,路由概念,绑定模型,验证等。他和传统的WEB应用程序不同的是MVC的试图部分。它返回JSON或者XML数据,而不是返回HTML,客户端应用程序使用这些数据控制他们的行为或者更新UI。

  传统的WEB应用程序用户在浏览浏览器时,服务器通过HTML返回用户的请求。一般使用MVC的中间件Razor模板生成HTML。但是现代应用程序的开发人员也有许多其它的可能性来考虑。

WEB API 使用于哪些实际场景

  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 的优势

  现代开发者需要考虑许多不同的应用程序的消费者。比如出传统的浏览器应用程序,或者SPA,移动应用程序或者其他应用程序。WEB API 公开了许多可用于访问的URL或更改服务器上的数据。它通常使用 HTTP 进行访问。
  使用 WEB API的最大的优势之一是, 它可以作为一个通用的为您的所有应用程序提供后端。例如, 可以首先构建使用 WEB API 的客户端应用程序。稍后, 您可以添加使用相同的 WEB API, 几乎不需要或根本不需要对ASP .NET Core核心代码进行修改。
  最后不管是使用.NET Core MVC还是.NET Core WEB API构建WEB的应用程序,这些最终取决于你的个人喜好。

2.控制器方法使用

返回原始的.NET对象

代码片段如下,返回了.NET的string类型集合:

 [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();
        }

返回结果如下图:

成功结果截图:

失败结果截图:

3.请求模型

 请求模型流程

4.配置路由

设置默认启动控制器

在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请求");
        }
    }

原文地址:https://www.cnblogs.com/fengye310/p/10925441.html

时间: 2024-08-30 13:40:36

.NET Core Web API理解的相关文章

使用Swagger来生成asp.net core Web API 文档

对于构建一个消费应用程序,理解API的各个方法对开发这是一个不小的挑战.为了使你的API更利于阅读.使用Swagger为你的Web API生成好的文档和帮助页,.NET Core实现了Swashbuckle.AspNetCore,使用Swagger是非常简单的,只需添加一组Nuget包和修改Startup就可以搞定. .Swashbuckle.AspNetCore 开源项目, ASP.NET Core Web API生成Swagger文档的 .Swagger是一个机器可读的restful风格的a

ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很长的路要走.今天,我们就研究一下在事件处理器中,对象生命周期的管理问题. 事实上,不仅仅是在事件处理器中,我们需要关心对象的生命周期,在整个ASP.NET Core Web API的应用程序里,我们需要理解并仔细推敲被注册到IoC容器中的服务,它们的生命周期应该是个怎样的情形,这也是服务端应用程序设

循序渐进学.Net Core Web Api开发系列【13】:中间件(Middleware)

系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如何使用中间件(Middleware). 二.初步演练 先写几个中间件 public class DemoAMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public Dem

[转]ASP.NET Core Web API 最佳实践指南

原文地址: ASP.NET-Core-Web-API-Best-Practices-Guide 转自 介绍# 当我们编写一个项目的时候,我们的主要目标是使它能如期运行,并尽可能地满足所有用户需求. 但是,你难道不认为创建一个能正常工作的项目还不够吗?同时这个项目不应该也是可维护和可读的吗? 事实证明,我们需要把更多的关注点放到我们项目的可读性和可维护性上.这背后的主要原因是我们或许不是这个项目的唯一编写者.一旦我们完成后,其他人也极有可能会加入到这里面来. 因此,我们应该把关注点放到哪里呢? 在

asp.net core web api token验证和RestSharp访问

对与asp.net core web api验证,多种方式,本例子的方式采用的是李争的<微软开源跨平台移动开发实践>中的token验证方式. Asp.net core web api项目代码: 首先定义三个Token相关的类,一个Token实体类,一个TokenProvider类,一个TokenProviderOptions类 代码如下: /// <summary> /// Token实体 /// </summary> public class TokenEntity

Core Web API上使用Swagger提供API文档

在ASP.NET Core Web API上使用Swagger提供API文档 我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页面后,在IISExpress启动Web API站点后,会自动重定向到API文档页面,非常方便.这不仅让我能够快速省查API设计的合理性,同时从API的使用角度也为我自己提供了便捷.下图就是我的博客系统RESTful API

通过Swashbukle给DotNet Core Web API 增加自动文档功能

DotNet Core Web API给开发者提供了一个很好的框架来开发Restful的API.那么这些API接口该如何管理起来呢?Swagger是一个很好的选择,Swagger不需要开发者额外去维护接口文档,只要开发者的接口遵循Restful的规范,Swagger就会根据API接口生成文档. 对于前后端分离的开发模式,前后端开发者一般会先定义好接口,然后各自独立开发,后端开发者可以使用Swagger很快的生成没有业务逻辑的接口文档,接口返回的是Mock Data,这样前端开发人员就可以更早的开

ASP.NET Core Web API Cassandra CRUD 操作

在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将使用 Postman 来完成. ASP.NET Core 是 ASP.NET 的重大的重构,ASP.NET Core 是一个全新的开源和跨平台的框架,用于构建如 Web 应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序. ASP.NET Core 已经内置了用 MVC 架

docker中运行ASP.NET Core Web API

在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Core以及docker的基本概念,网上已经有很多文章对其进行介绍了,因此本文不会再详细讲解这些内容.对.NET Core和docker不了解的朋友,建议首先查阅与这些技术相关的文档,然后再阅读本文. 先决条件 要完成本文所介绍的演练任