我们在写WebApi时,一般都是要对接口的入参进行验证。若入参为一个实体,我们一般用注解的方式(DataAnnotations)+ModelState,或者FluentValidation来验证实体。这几种常用的方法我就不总结了,网上有一大堆。参考:https://www.cnblogs.com/lwqlun/p/10311945.htmlhttp://www.zyiz.net/tech/detail-200294.html 但是若接口的入参不是实体,我们该怎么校验呢?其实这种情况操作起来更简单,微软早就帮我们准备好方法了。也就是使用...
引言在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者的心情。或者详细点,或者简单点。那么有没有一种快速有效的方法来构建api说明文档呢?答案是肯定的, Swagger就是最受欢迎的REST APIs文档生成工具之一!为什么使用Swagger作为REST APIs文档生成工具Swagger 可以生成一个具有互动性的API...
概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建。微软爸爸官方文档:使用新数据库在 ASP.NET Core 上开始使用 EF Core 数据库表字段命名规范 步骤 1. 右击 Entity 项目,点击“管理NuGet程序包” 2. 安装以下三个包Microsoft.EntityFrameworkCore 安装版本:2.1.0Microsoft.EntityFrameworkCore.Tools 安装...
关于 SwaggerSwagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因:Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。Swagger 文件可以在许多不同的平台上从代码注释中自动生成。Swagger 有一个强大的社区,里面有许多强悍的贡献者。Swagger 文档提供了一个方法,使我们可以用指定的 JSON摘要来描述你的 API,包括了比如 n...
https://www.w3xue.com/exp/article/20194/32934.htmlhttps://blog.csdn.net/xhl_james/article/details/105343253原文:https://www.cnblogs.com/carlpeng/p/13226825.html
WebApi必须保证安全,现在来添加JWT认证1、打开appsettings.json添加JWT认证的配置信息2、在项目根目录下新建一个Models文件夹,添加一个JwtSettings.cs的实体 1namespace Dinner.WebApi.Models2{3publicclass JwtSettings4 {5///<summary> 6/// 证书颁发者7///</summary> 8publicstring Issuer { get; set; }910///<summary>11/// 允许使用的角色
12///</summary>13publicstring Audience { get; set; }
1415///<summary>16///...
故事的开始老板说:系统很慢,下载半个小时无法下载,是否考虑先压缩再给用户下载? 本来是已经压缩过了,不过第一反应应该是用户下的数量多,导致压缩包很大,然后自己测试发现,只是等待的时间比较久而已,仍然是下载状态中,并不是系统慢,但是用户体验肯定是最直观的,确实是我们做得不够好,单纯弹出遮罩层显示冰冷的“拼命加载中……”,对用户来说确实不够友好。嗯,了解实际情况了,那就开撸,增...
第一步:先编写webapi接口:接口介绍:1、接口采用appkey和appsecret2、访问的话,在报文头加上,appkey和sign。1、sign由请求地址(例如:http://www.xxx.com/api/user/xx/,那么地址是/api/user/xx/)+appsecret+queryString或者报文体使用SHA1散列算法得出。Filter代码:1 string appKey = "fjdsakljg";2 string appSecret = "dfhdjsklahfkdsbgkfdhtu";3 4 public void OnAuthorization(AuthorizationFilterConte...
最新在将原来写的一些webSerivce转换为WebApi,直接就用了ASP.Net Core 2.0的框架,在使用中,发现的与原有的asp.net不同的地方,通过搜索已经慢慢解决,记录下来备用。
一、全局配置
在asp.net中,全局变更配置写在web.config中,如下所示
<?xml version="1.0"?>
<configuration>
<connectionStrings><add name="conn" connectionString="Data Source=localhost;Initial Catalog=helloworld;Integrated Security=True"/></connect...
async Task<IActionResult> PutModel(DTO model)
{_context.Entry(model).State = EntityState.Modified;var result = await _context.SaveChangesAsync().ConfigureAwait(false);return OK("修改实体成功!");
}这样做后台是很方便,可是EF全部更新效率实在太低,而且没必要,而且前台就需要把所有的DTO对象都传过来,如果有不想要修改的怎么办?好吧。用EF的 _context.Entry(model).Property(m => m.Field1).IsModified = fals...
Framework时代 在Framework时代,我们一般进行参数验证的时候,以下代码是非常常见的
[HttpPost]public async Task<JsonResult> SaveNewCustomerAsnyc(AddCustomerInput input){if (!ModelState.IsValid){return Json(Result.FromCode(ResultCode.InvalidParams));}.....} 或者高级一点是实现IActionFilter进行拦截,如下:
public class ApiValidationFilter : IActionFilter{public bool AllowMultiple => false;publi...
1、前言
为什么我们要隐藏部分接口?
因为我们在用swagger代替接口的时候,难免有些接口会直观的暴露出来,比如我们结合Consul一起使用的时候,会将健康检查接口以及报警通知接口暴露出来,这些接口有时候会出于方便考虑,没有进行加密,这个时候我们就需要把接口隐藏起来,只有内部的开发者知道。
为什么要分组?
通常当我们写前后端分离的项目的时候,难免会遇到编写很多接口供前端页面进行调用,当接口达到几百个的时候就需要区...
背景:现在越来越多的企业都采用了在开发上前后端分离,前后端开发上的分离有很多种,那么今天,我来分享一下项目中得的前后端分离。
B/S Saas 项目:(这个项目可以理解成个人中心,当然不止这么点功能)
前端:node.js + vue
后端:.net core webapi
前端安装 node.js 跟创建vue项目这些不是这篇文章的重点,重点在于项目完成后的部署。
.net corewebapi创建后,默认就创建了一个wwwroot的文件夹,这个文件夹是用来放置静态文件的...
我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下
jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于中间件,我的处理方式是将获取token放到api的一个具体的controller中,将发放token与验证分离,token的失效时间,发证者,使用者等信息存放到config中。
1.配置:
在appsettings.json中增加配置
"Jwt": {
"Issuer": "issuer",//随意定义
"Audience": "Audience",//随意定义
"SecretKey": "...
>前言
好久没冒泡了,算起来估计有快半年没更新博客了,估计是我第一次停更如此之久,人总有懒惰的时候,时间越长越懒惰,但是呢,不学又不行,持续的惰性是不行dei,要不然会被时光所抛弃,技术所淘汰,好吧,进入今天的主题,本节内容,我们来讲讲.NET Core当中的模型绑定系统、模型绑定原理、自定义模型绑定、混合绑定、ApiController特性本质,可能有些园友已经看过,但是效果不太好哈,这篇是解释最为详细的一篇,建议已经学过...