当前位置: 首页 > news >正文

网站开发厂商wordpress公司网站模版

网站开发厂商,wordpress公司网站模版,番禺人才网最新招聘市场在哪里?,什么是网络推广?1、前言为什么我们要隐藏部分接口#xff1f;因为我们在用swagger代替接口的时候#xff0c;难免有些接口会直观的暴露出来#xff0c;比如我们结合Consul一起使用的时候#xff0c;会将健康检查接口以及报警通知接口暴露出来#xff0c;这些接口有时候会出于方便考虑因为我们在用swagger代替接口的时候难免有些接口会直观的暴露出来比如我们结合Consul一起使用的时候会将健康检查接口以及报警通知接口暴露出来这些接口有时候会出于方便考虑没有进行加密这个时候我们就需要把接口隐藏起来只有内部的开发者知道。为什么要分组通常当我们写前后端分离的项目的时候难免会遇到编写很多接口供前端页面进行调用当接口达到几百个的时候就需要区分哪些是框架接口哪些是业务接口这时候给swaggerUI的接口分组是个不错的选择。swagger的基本使用这里将不再赘述可以阅读微软官方文档即可基本使用2、swaggerUI中加入授权请求新建 HttpHeaderOperationFilter 操作过滤器继承 Swashbuckle.AspNetCore.SwaggerGen.IOperationFilter 接口实现 Apply 方法/// summary/// swagger请求头/// /summarypublic class HttpHeaderOperationFilter : IOperationFilter{ public void Apply(Operation operation, OperationFilterContext context) { #region 新方法if (operation.Parameters null) { operation.Parameters new ListIParameter(); } if (context.ApiDescription.TryGetMethodInfo(out MethodInfo methodInfo)) { if (!methodInfo.CustomAttributes.Any(t t.AttributeType typeof(AllowAnonymousAttribute))!(methodInfo.ReflectedType.CustomAttributes.Any(t t.AttributeType typeof(AuthorizeAttribute)))) { operation.Parameters.Add(new NonBodyParameter { Name Authorization, In header, Type string, Required true, Description 请输入Token格式为bearer XXX }); } } #endregion#region 已过时//if (operation.Parameters null) //{ // operation.Parameters new ListIParameter(); //} //var actionAttrs context.ApiDescription.ActionAttributes().ToList(); //var isAuthorized actionAttrs.Any(a a.GetType() typeof(AuthorizeAttribute)); //if (isAuthorized false) //{ // var controllerAttrs context.ApiDescription.ControllerAttributes(); // isAuthorized controllerAttrs.Any(a a.GetType() typeof(AuthorizeAttribute)); //} //var isAllowAnonymous actionAttrs.Any(a a.GetType() typeof(AllowAnonymousAttribute)); //if (isAuthorized isAllowAnonymous false) //{ // operation.Parameters.Add(new NonBodyParameter // { // Name Authorization, // In header, // Type string, // Required true, // Description 请输入Token格式为bearer XXX // }); //}#endregion }}然后修改 Startup.cs 中的 ConfigureServices 方法添加我们自定义的 HttpHeaderOperationFilter 过滤器public IServiceProvider ConfigureServices(IServiceCollection services){ ... services.AddSwaggerGen(c { ...c.OperationFilterHttpHeaderOperationFilter(); }); ...}这时候我们再访问swaggerUI就可以输入Token了3、API分组修改 Startup.cs 中的 ConfigureServices 方法添加多个swagger文档public IServiceProvider ConfigureServices(IServiceCollection services){ ... services.AddSwaggerGen(c { c.SwaggerDoc(v1, new Info { Version v1, Title 接口文档, Description 接口文档-基础, TermsOfService , Contact new Contact { Name XXX1111, Email XXX1111qq.com, Url } }); c.SwaggerDoc(v2, new Info { Version v2, Title 接口文档, Description 接口文档-基础, TermsOfService , Contact new Contact { Name XXX2222, Email XXX2222qq.com, Url } }); //反射注入全部程序集说明 GetAllAssemblies().Where(t t.CodeBase.EndsWith(Controller.dll)).ToList().ForEach(assembly { c.IncludeXmlComments(assembly.CodeBase.Replace(.dll, .xml)); }); c.OperationFilterHttpHeaderOperationFilter(); //c.DocumentFilterHiddenApiFilter(); }); ...}修改 Startup.cs 中的 Configure 方法加入public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory){ ... app.UseSwagger(); app.UseSwaggerUI(c { c.SwaggerEndpoint(/swagger/v2/swagger.json, 接口文档-基础);//业务接口文档首先显示 c.SwaggerEndpoint(/swagger/v1/swagger.json, 接口文档-业务);//基础接口文档放后面后显示 c.RoutePrefix string.Empty;//设置后直接输入IP就可以进入接口文档 }); ...}然后还要在我们的控制器上面标注swagger文档的版本这时候我们就可以将接口文档进行分组显示了4、API隐藏创建自定义隐藏特性 HiddenApiAttribute.cs /// summary/// 隐藏swagger接口特性标识/// /summary[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]public class HiddenApiAttribute:System.Attribute{}创建API隐藏过滤器 HiddenApiFilter 继承 Swashbuckle.AspNetCore.SwaggerGen.IDocumentFilter 接口实现 Apply 方法/// summary/// 自定义Swagger隐藏过滤器/// /summarypublic class HiddenApiFilter : IDocumentFilter{ public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context) { foreach (ApiDescription apiDescription in context.ApiDescriptions) { if (apiDescription.TryGetMethodInfo(out MethodInfo method)) { if (method.ReflectedType.CustomAttributes.Any(tt.AttributeTypetypeof(HiddenApiAttribute))|| method.CustomAttributes.Any(t t.AttributeType typeof(HiddenApiAttribute))) { string key / apiDescription.RelativePath; if (key.Contains(?)) { int idx key.IndexOf(?, System.StringComparison.Ordinal); key key.Substring(0, idx); } swaggerDoc.Paths.Remove(key); } } } }}在 Startup.cs 中使用 HiddenApiFilter public IServiceProvider ConfigureServices(IServiceCollection services){ ... services.AddSwaggerGen(c { c.SwaggerDoc(v1, new Info { Version v1, Title 接口文档, Description 接口文档-基础, TermsOfService , Contact new Contact { Name XXX1111, Email XXX1111qq.com, Url } }); c.SwaggerDoc(v2, new Info { Version v2, Title 接口文档, Description 接口文档-基础, TermsOfService , Contact new Contact { Name XXX2222, Email XXX2222qq.com, Url } }); //反射注入全部程序集说明 GetAllAssemblies().Where(t t.CodeBase.EndsWith(Controller.dll) !t.CodeBase.Contains(Common.Controller.dll)).ToList().ForEach(assembly { c.IncludeXmlComments(assembly.CodeBase.Replace(.dll, .xml)); }); c.OperationFilterHttpHeaderOperationFilter();c.DocumentFilterHiddenApiFilter(); }); ...}示例我这里提供了Consul的心跳检车接口但是在接口文档中并没有显示出来原文地址https://www.cnblogs.com/wyt007/p/10650974.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.yutouwan.com/news/43902/

相关文章:

  • 为网站开发android客户端郑州男科医院十大排名
  • 山东临沂市需要建设网站的公司制定网站分工任务网站的建设规划
  • 请人做网站卖东西好吗贵州省建设厅建筑官方网站
  • 张店易宝网站建设做国外营销型网站设计
  • 沈阳网站建设优化企业当当网网站系统建设的意义
  • 韩国美食做视频网站有哪些谷歌搜索关键字网站
  • 免费个人主页网站Python个人网站建设论文
  • 电子商务网站建设与管理课程心得惠州seo关键词推广
  • 满分作文网站设计制作小车一教学设计
  • 怎么做响应式网站做网络平台的网站有哪些
  • 国外做美食视频网站有哪些企业所得税避税方法
  • 网站提交网址赤峰最好的网站建设公司
  • 效果好的徐州网站建设软件商城哪个好
  • 网站建设 单一来源wordpress 瀑布流模板
  • 福山区建设工程质量检测站网站小学最好的网站建设
  • 做内贸注册什么网站成都企业网站制作哪家好
  • 学做php网站沧县做网站价格
  • 广州南沙网站建设py可以做网站吗
  • 中山移动网站设计做网站有年费吗
  • 开发h5网站开发廊坊百度快照优化
  • 河北省老区建设促进会网站定制高端网站
  • html5做静态网站制作h5
  • 做热图的在线网站手机 电脑 同步 wordpress
  • 上海创新网站建设百度一下就一个
  • 摄影比赛投稿网站常州自助建站seo
  • 网站热图分析微信公众号里的小网站怎么做的
  • 安徽省建设质量安全协会网站手机微信一体网站建设
  • 前端开发做网站吗保定市住房保障和城乡建设局网站
  • 荆州网站建设推荐官方网站开发用什么语言
  • 企业网站服务器租用hanchengkeji杭州网站建设