首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET Core 6框架揭秘实例演示:利用路由开发REST API

ASP.NET的路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成的,它们在ASP.NET平台上具有举足轻重的地位,MVC和gRPC框架...Minimal API更是将提升到了前所未有的高度,是我们直接在路由系统基础上定义REST API。...(本篇提供的实例已经汇总到《ASP.NET Core 6框架揭秘-实例演示版》) [S2001]注册路由终结点 (源代码) [S2002]以内联方式设置路由参数的约束(源代码) [S2003]定义可缺省的路由参数...ForecastAsync方法也并没有对提取的路由参数做任何验证,所以在执行过程中面对不合法的输入会直接抛出异常。...这样针对ForecastAsync方法的改动就完全没有必要。

75720

用ASP.NET Core 2.1 建立规范的 REST API -- HATEOAS

项目开始提升到Richardson成熟度3级的高度,尽管暂时还没有实现REST所有的约束,但是已经比较RESTful了。....jpg HATEOAS(Hypermedia as the engine of application state)是 REST 架构风格中最复杂的约束,也是构建成熟 REST 服务的核心。...为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现....所以我们返回的content-type的类型是错误的,而且还会导致API消费者无法从content-type的类型来正确的解析响应,也就是说我没有告诉API消费者如何来处理这个结果。...这时,错误提示就没有了: ? 微软的API Versioning库 微软提供了一个API 版本管理的库:Microsoft.AspNetCore.Mvc.Versioning。

87140
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

    标准的认证流程开始于一个访问服务器被保护资源的匿名请求, HTTP服务器随后处理了该请求并决定拒绝让它访问被保护的资源, 因为该请求没有凭据; 随后HTTP Server发送了一个WWW-Authenticate...这几种方案里Basic提供的保护程度/级别最低, 而Negotiate最高/强. ASP.NET Core可选择的认证提供商就很多了, 例如ASP.NET Core Identity....但是它主要用于包含页面的web应用, 例如MVC或Razor Page, 并不适用于REST/Web API, 所以不介绍它了....我一直在用Identity Server 4, 但是这里不会深入介绍, 这里主要介绍如何实现REST API, 如果有需要的话, 可以写一系列关于Identity Server 4的文章....这样就可以保护API,避免一些非正常使用的场景,例如网络爬虫或请求太多而导致API的性能严重下降,Dos和DDos。

    1.3K20

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

    在RPC的世界里, 节点仅仅就是可以在远程被触发的函数, 而在REST的世界里, 节点就是实体, 也叫做资源....REST的原则/约束 REST有6大原则/约束, 每一个原则都是对API有正面或负面影响的设计决定....然后我们看一下项目文件, 右键编辑MyRestful.Api: ? 这里, SDK属性表示了我们使用的是哪个SDK, 而目标框架是.NET Core 2.0....这个把Http请求绑定到参数的过程叫做实体绑定。 例如: ? 其中id参数是定义在路由里的,而name参数在路由里没有,但是仍然可以从查询参数中把name参数映射出来。...实体验证 ASP.NET Core内置的实体验证是通过验证属性标签来实现的,大多数情况下这样会很方便。 例如: ?

    1.7K00

    用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发

    对比一下: 私有缓存:后续的请求会节省网络带宽,我们需要与API进行通信,但是API不需要把完整的响应返回来,如果资源没有变化的话只需要返回304即可。...组合使用过期模型和验证模型 可以这样做: 如果使用私有缓存,这时只要响应没有过期,那么响应直接会从私有缓存返回。这样做的好处就是减少了与API之间的通信,也减少了API生成响应的工作,减轻了带宽需求。...如果验证成功,就会返回304,没有响应body,这就有可能减少了缓存和API之间的网络带宽需求,响应还是从缓存返回到客户端的。...悲观并发控制意味着资源是为客户1锁定的,只要资源处于锁定的状态,别人就不能修改它,只有客户1可以修改它。但是悲观并发控制是无法在REST下实现的,因为REST有个无状态约束。...最后客户1再更新(使用的是老的ETag): ? 返回412。 本文比较短,一些关于缓存技术的内容并没有写,距离REST的主题有点远。

    70830

    构建强大的API-Django中的REST框架探究与实践

    在当今的Web开发中,构建强大的API已经成为了不可或缺的一部分。而在Python领域,Django框架提供了强大的REST框架,为开发者提供了一种高效、灵活的方式来构建和管理API。...Django中的REST框架提供了一套强大的工具和库,帮助开发者轻松构建和管理RESTful API。2....下面是一些可能的改进和扩展:自定义API端点在路由配置中,我们使用了DefaultRouter提供的默认路由,但有时候我们可能需要自定义API端点。...Django REST框架提供了丰富的文档和测试工具,可以帮助我们编写和管理API的文档和测试。...API文档Django REST框架提供了内置的API文档功能,可以自动生成API的文档,并提供给开发者参考和使用。

    40920

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 + 项目准备

    在RPC的世界里, 节点仅仅就是可以在远程被触发的函数, 而在REST的世界里, 节点就是实体, 也叫做资源....REST的原则/约束 REST有6大原则/约束, 每一个原则都是对API有正面或负面影响的设计决定....选择空模板, OK: 项目建立好了, 结果如下: 然后我们看一下项目文件, 右键编辑MyRestful.Api: 这里, SDK属性表示了我们使用的是哪个SDK, 而目标框架是.NET Core...这个把Http请求绑定到参数的过程叫做实体绑定。 例如: 其中id参数是定义在路由里的,而name参数在路由里没有,但是仍然可以从查询参数中把name参数映射出来。...实体验证 ASP.NET Core内置的实体验证是通过验证属性标签来实现的,大多数情况下这样会很方便。

    2.7K72

    用ASP.NET Core 2.1 建立规范的 REST API -- 翻页排序过滤等

    (从ASP.NET Core 2.0 迁移至 ASP.NET Core 2.1: https://docs.microsoft.com/en-us/aspnet/core/migration/20_21...但是仍然是Richardson成熟度顶多为2级的Web API,未达到RESTful API的标准和约束。 集合的更新操作 ?...首先我们需要从参数(query string参数)传进来pageIndex和pageSize,还要赋默认值,以防止API的消费者没有设置pageIndex和pageSize;由于pageSize的值是由...API的消费者来定的,所以应该在后端设定一个最大值,以免API的消费者设定一个很大的值。...所以如果返回这样的数据就违反了REST的规则了(尽管本文代码的Richardson成熟度最多也就是2级),它违反了自我描述的约束(请参考本系列的预备知识文章),API消费者不知道如何通过application

    1.3K10

    用ASP.NET Core 2.0 建立规范的 REST API -- DELETE, UPDATE, PATCH 和 Log

    在REST API里,我们有时也会遇到这样的需求。我们暂时把这个方法叫做Upsert (Update + Insert) 。那么问题来了应该使用POST还是PUT呢?...验证 为了进行输入验证(不验证输出),我们需要做以下三方面工作: 定义验证规则 检查验证规则 把验证错误信息发送给API的消费者 之前的文章也提到的ASP.NET Core里面定义验证规则的方式: Data...对于EFCore的实体约束和验证,我不愿意使用注解的方式(因为Model类应该只干自己的活),更喜欢使用fluent api。...此外,目前这些验证规则是处于EFCore 的实体上的,而报告给API消费者的验证错误信息应该定义在Resource这一层面上,所以下面就为Resource model定义验证规则: ? ?...由于ASP.NET Core并没有内置的帮助方法可以返回422和验证错误信息,所以我们先建立一个类用于返回 422 和验证错误信息,它继承于ObjectResult: ?

    1.9K20

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    不知道您有没有发现上面这几个例子中日志输出的时候都有个数字 [0], 它是事件的标识符。因为上面的例子中我们没有指定事件的ID,所以就取默认值0。使用事件ID还是可以帮助我们区分和关联记录的日志的。...并把它们添加到MyRestful.Api项目的引用里....用REST的术语来说, 我们把客户端请求服务器返回的对象叫做资源(Resources)....而且我之前讲过应该把Repository看作是Domain Models的集合, 例如list, 而list.Save()也没有什么意义....好的, 这次先写道这里, 项目已经做好了最基本的准备, 其余功能的扩展会随着后续文章进行. 下面应该快要切入REST的正题了.

    1.1K00

    ThingsBoard 物联网平台-代码结构分析

    Web UI 服务 ThingsBoard 提供了一个使用 Express.js 框架编写的轻量级组件来承载静态 web ui 内容。这些组件是完全无状态的,没有多少可用的配置。静态网页界面包含捆绑。...一旦加载完成,应用程序就开始使用 ThingsBoard Core 提供的 REST API 和 websocket API。...Node 微服务 节点是一个用 Java 编写的核心服务,负责处理: REST API 调用; 关于实体遥测和属性更改的 WebSocket 订阅; 通过规则引擎处理消息; 监视设备连接状态(活动/非活动...Web UI 微服务 提供了一个使用 Express.js 框架编写的轻量级组件来承载静态 web ui 内容。这些组件是完全无状态的,没有多少可用的配置。 4....包含了data、util、message 、actor、queue、 transport 、dao-api、cluster-api、stats、cache 、coap-serve、edge-api 共计

    4K20

    SpringBoot 笔记

    template 为路由规则,比如 \{:name}\{:id} TODO: ASP.NET Core路由规则中参数有没有 : 不确定 无视下图的 [HttpGet("")],只为后图演示,其实不能这么写...:RazorViewEngine,它维护了一个匹配路由规则的列表 ASP.NET Core 中其实是无需注解路由的,因为这样和Controller类名 ,Action 方法名,默认匹配路由的规则已经被框架...-- 查询单个 id必须唯⼀ 和dao中的函数名关联 parameterType="" 表示约束传⼊参数的类型--如果参数类型过多,可以不⽤写 resultType="" 表示返回值的类型(必须是实体类和数据库字段...使用Restful API 风格 其实与 ASP.NET MVC 与 ASP.NET WebAPI 普通 Controller 与 ApiController 的区别 类似 Q: 无法连接数据库 java.sql.SQLException...test 中并不由SQL解析,而是框架 其它 SpringMVC 默认的方式是转发 转发: 表示 一次请求 重定向: 重新发起一次请求 AJAX 请求登录后,响应 Set-Cookie ,但浏览器仍然没有设置

    1.8K10

    Asp.net web api 知多少

    ASP.NET WEB API 是一个框架用来搭建HTTP服务以供客户端(比如:浏览器,手机,IPhone等)调用。...但是它并不是MVC框架的一部分。它是 ASP.NET 平台的核心部分。能被MVC或者其他类型的web应用使用。同时它也可以用作独立的web服务应用程序。...比如:twitter,facebook,Google Api都支持web应用程序和手机app。 WEB API是一个很棒的框架用来暴露你的数据和服务到不同的设备。...WEB API 一种新的框架提供了简易的方式用来搭建HTTP services。 WEB API是一个开源的理想的平台在.NET Framework上搭建REST-ful services。...WEB API 的请求映射到Http动词对应的action;MVC 的请求直接映射到对应的action name。 ASP.NET WEB API是新的框架和ASP.NET框架核心的一部分。

    4.8K50

    ASP.NET Web API对OData的支持

    除了提供一些基本的操作(像增删改查),也提供了一些高级的操作类似过滤数据和实体的导航。OData扩展了上述的协议但是不是取代他们。...如果你过去在给你的REST服务创建搜索、过滤、或者分页API的时候感觉很麻烦,那么OData将是一个不错的选择。 目前很多接口,无论是基于SOAP、REST还是别的都在交换数据时使用不同的模式。...最后,决定想要查询的东西,通过比如邮政编码来查询。   首先是,没有创建泛型客户端的途径,而这些和API紧密联系,因为它不知道参数的顺序或者模式被使用的顺序。...前者导致API 需要管理的界面的增加,后者会导致我们通常所说的“数据竖井”,也就是关键数据在特定模式中锁定,其他应用不能够简单应用,因为它没有以一种需要的方式暴露给这个应用。...我们没有写任何一个特别的逻辑去支持这些功能,全部都由框架来提供的。是不是OData为你的搜索、过滤、或者分页API的时候提供了一个很好的选项。

    2.7K50

    推荐几个对Asp.Net开发者比较实用的工具 2

    推荐几个对Asp.Net开发者比较实用的工具。大家有相关工具也可以在评论区留言,一起努力学习。 作为程序员要有挑战精神,大家可以尝试一下这些工具。...已经有篇文章写到了vs的扩展工具,这里不再累赘,请查看:推荐几个对Asp.Net开发者比较实用的工具 1.Asp.Net Fiddler:捕获HTTP请求和响应,以及模拟HTTP请求的工具,下载地址:http...://www.telerik.com/fiddler AutoMapper:对象映射工具,例如可以把实体对象转换影射为领域对象。...下载地址:http://automapper.org/ Unity/Ninject/Castle Windsor/StructureMap/Spring.Net:依赖注入框架,这是比较常用的一些DI框架...http://www.asphere.cz/en/index.html 2.REST API Swagger UI: API测试和文档工具.http://swagger.io/swagger-ui/ PostMan

    1.2K50

    Portal-Basic Java Web应用开发框架V3.0正式发布(源码、实例及文档)

    Portal-Basic Java Web应用开发框架(简称 Portal-Basic)是一套功能完备的高性能Full-Stack Web应用开发框架,内置稳定高效的MVC基础架构和DAO框架(已内置Hibernate...Portal-Basic主要特点: 1) 功能全面:内置稳定高效的MVC基础架构和DAO框架,支持Action拦截、Form Bean / Dao Bean / Spring Bean装配和声明式事务,...另外,Portal-Basic并没有对JSP/Servet API进行过多封装,开发者仍然使用JSP/Servet API开发应用程序,没有过多的迂回,性能得到保证。...3) 优秀的使用体验:Portal-Basic的设计目标之一是提供良好的开发体验,尽量减少应用程序开发者 的工作,API的设计力求简单、完整、明确。...:应用篇(五) —— DAO 框架Portal-Basic Java Web 应用开发框架:应用篇(六) —— 公共组件Portal-Basic Java Web 应用开发框架:应用篇(七) —— 页面静态化

    1K90
    领券