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

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

.jpg HATEOAS(Hypermedia as the engine of application state)是 REST 架构风格中最复杂约束,也是构建成熟 REST 服务核心。...它重要性在于打破了客户端和服务器之间严格契约,使得客户端可以更加智能和自适应,而 REST 服务本身演化和更新也变得更加容易。...为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现....返回是406,Not Acceptable。 这是因为ASP.NET Core格式化器并不认识我们这个自定义媒体类型。 在Startup里面添加这两句话以支持这个媒体类型: ?...这次就写到这里,源码在:https://github.com/solenovex/ASP.NET-Core-2.0-RESTful-API-Tutorial 下周继续。

83440

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

这几种方案里Basic提供保护程度/级别最低, 而Negotiate最高/强. ASP.NET Core可选择认证提供商就很多了, 例如ASP.NET Core Identity....但是它主要用于包含页面的web应用, 例如MVC或Razor Page, 并不适用于REST/Web API, 所以不介绍它了....我一直在用Identity Server 4, 但是这里不会深入介绍, 这里主要介绍如何实现REST API, 如果有需要的话, 可以写一系列关于Identity Server 4文章....view=aspnetcore-2.1&tabs=visual-studio#require-https), 它建议ASP.NET Core web应用都应该调用HTTPS重定向中间件, 这样就可以把所有的...ASP.NET Core有一个第三方库Swashbuckle,它支持Swagger,但是只支持版本2,版本2有个重要缺陷就是不支持Action重载,之前HATEOAS文章里提到过我们需要使用这种重载

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

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

Cache-Control还有很多其它指令,常见几个可以在ASP.NET Core官网上看:https://docs.microsoft.com/en-us/aspnet/core/performance...这个组件应该位于缓存后端, ASP.NET Core里有个自带属性标签 [ResponseCache] (https://docs.microsoft.com/en-us/aspnet/core/performance...悲观并发控制意味着资源是为客户1锁定,只要资源处于锁定状态,别人就不能修改它,只有客户1可以修改它。但是悲观并发控制是无法在REST下实现,因为REST有个无状态约束。...ASP.NET Core关于缓存部分文档在这里:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/?...view=aspnetcore-2.1 本系列源码在:https://github.com/solenovex/ASP.NET-Core-2.0-RESTful-API-Tutorial

68030

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...在ASP.NET Core里,我要使用Linq来动态组建一个查询表达式(IQueryable,可以创建表达式树),它是延迟执行,直到各种条件都判断完了并组建出最终查询表达式之后才去执行(查询数据库...我使用了这个参数类代替了之前pageIndex和pageSize参数,因为ASP.NET Core足够智能,可以把这两个参数解析到这个类里面。 下面测试一下: ?...所以如果返回这样数据就违反了REST规则了(尽管本文代码Richardson成熟度最多也就是2级),它违反了自我描述约束(请参考本系列预备知识文章),API消费者不知道如何通过application...该方法可以在Startup里面调用,从而注册到ASP.NET Core服务容器里: ? 然后再次修改CountryRepository: ?

1.2K10

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

REST API里,我们有时也会遇到这样需求。我们暂时把这个方法叫做Upsert (Update + Insert) 。那么问题来了应该使用POST还是PUT呢?...验证 为了进行输入验证(不验证输出),我们需要做以下三方面工作: 定义验证规则 检查验证规则 把验证错误信息发送给API消费者 之前文章也提到ASP.NET Core里面定义验证规则方式: Data...由于ASP.NET Core并没有内置帮助方法可以返回422和验证错误信息,所以我们先建立一个类用于返回 422 和验证错误信息,它继承于ObjectResult: ?...最后还要为ASP.NET Core配置FluentValidation,在StartupConfigureServices方法里: ?...支持ASP.NET Core第三方Log提供商有很多,NLog,Serilog等等。这里我使用Serilog(https://github.com/serilog/serilog)。

1.8K20

Asp.net Core Flurl.Http 结合IHttpClientFactory管理HttpClient生命周期

Asp.net Core, 在我用过多种Http REST 客户端: RestSharp WebApiClient Refit Flurl 中,Flurl可以说是最符合我口味,用起来那可真的顺滑无比...不过它因为出现比较早,并没有使用asp.net coreIHttpClientFactory 管理HttpClient实例,而是自己管理。...一般是根据host来缓存一个HttpClient实例,比如你请求所有的https://www.baidu.com/ 都用一个缓存实例,这样可能会有些问题,比如Dns更新等; 对于我们有着用IHttpClientFactory...执念,Flurl也是支持: 简单写法 注入HttpClient public void ConfigureServices(IServiceCollection services) { //.....PassportUserModel> GetUserByPid(int pid) { var result = await _flurlClient.Request($"api

83720

【gRPC】 在.Net core中使用gRPC

在微软介绍.net微服务体系架构项目eShop中,微服务之间进行同步通信场景很多,大多数都是HTTP/REST,目前只有自定义聚合器与微服务之间通信是使用gRPC。...整套微服务架构体系,其实除了客户端与网关(BFF)之间,使用HTTP/REST,均可使用gRPC(只要网关支持HTTP/REST与gRPC转换) BFF转发外部请求 微服务之间 自定义聚合器与微服务...To learn how to create a client, visit: https://go.microsoft.com/fwlink/?...linkid=2086909"); }); }); ASP.NET Core 中间件和功能共享路由管道,因此可以将应用配置为提供其他请求处理程序...至于使用方式,依然是引入Grpc.Net.Client包,此包本来就是HttpClient基础上实现,大可以把此当作一个gPRCHttpClient使用。

73420

使用C#创建服务端Web API

前言 C# Web API 是一种基于 .NET 平台(包括但不限于.NET Framework 和 .NET Core)构建 HTTP 服务框架,用于创建 RESTful Web 服务。...在 C# 中,ASP.NET Web API 提供了一种模式和工具集,使得开发者能够方便地设计和实现对外暴露API接口,这些接口可以被各种客户端应用程序(如Web浏览器、移动应用、桌面应用或其他服务器端应用...使用 ASP.NET Web API 特点和优势包括: (1)模块化与分离关注点:控制器(Controllers)负责处理HTTP请求,模型(Models)代表业务对象,视图模型(ViewModels...4、点击"Add From"从活字格安装路径下引用"GrapeCity.Forguncy.ServerApi.dll"文件,这里需要注意是: 如果安装活字格服务端时,安装目录为默认目录,则此文件路径为...Context属性是Asp.net CoreHttpContext类型,通过Request属性可以获取HTTP请求全部信息。

11410

dotnet 用 MVC 方式打开 IPC 命名管道

这是一个用于本机多进程进行 IPC 通讯库,此库顶层 API 是采用 ASP.NET Core MVC 框架,其底层通讯不是传统走网络方式,而是通过 dotnetCampus.Ipc 开源项目提供...本库优势是可以使用设计非常好 ASP.NET Core MVC 框架作为顶层调用 API 层,底层通讯采用可提升传输性能命名管道,如此可以做到不走网络通讯从而极大减少网络端口占用问题和减少用户端网络环境带来问题...对 ASP.NET Core 来说,最期望客户端行为是通过 HttpClient 来进行发起调用。...,无须引入额外 IPC 知识 充当 IPC 里服务端和客户端业务代码将分别与 ASP.NET CoreHttpClient 对接。...,几乎看不出来加上 IPC 前后对 ASP.NET Core 应用调用差别,除了要求需要使用特定 HttpClient 对象之外,其他逻辑都相同。

93620

.NET周报 【6月第4期 2023-06-25】

ASP.NET Core 6框架揭秘实例演示[39]:使用最简洁代码实现登录、认证和注销 https://www.cnblogs.com/artech/p/inside-asp-net-core-6-...ASP.NET Core利用AuthenticationMiddleware中间件完成针对请求认证,并提供了用于登录、注销以及“质询”API,本篇文章利用它们使用最简单代码实现这些功能。...Microsoft Forms 是使用 .NET Framework 4.7.2 WebForms 和 Web API 构建微服务,但前端 REST API 和后端 REST API 服务已迁移到...【英文】如何在 Java 中构建共享库并从 .NET 代码调用它 https://medium.com/@sixpeteunder/how-to-build-a-shared-library-in-java-and-call-it-from-dotnet-code-b47c22300456...将 ASP.NET Core 最小 API 视为架构应用程序层配置。

25420
领券