WebApi项目创建 首先创建一个WebApi项目,结构如下。 ? 然后Nuget搜索ABP,安装ABP框架。...(我这里安装的是5.1.0,因为最高版本安装不上) 在安装ABP前先检查当前安装的Microsoft.AspNet.WebApi版本,因为ABP5.1.0依赖的是WebApi的5.2.7,如果WebApi...,ABP自动注册所有 Repositories, Domain Services, Application Services, MVC 控制器和Web API控制器 //ABP按照约定注册程序集...Sdudent是我们追加的前缀,可以自定义,例如Sdudent/Task //外放成ApiController的服务需要继承ABP的IApplicationService接口,需要准守命名约定...,这样才能被搜索到(服务命名约定:服务名+AppService,例如SearchSdudentAppService) Configuration.Modules.AbpWebApi
# 语言版本发展史 2014.11月 .NET Core 项目启动,2016.06月 .NET Core 1.0 发布 微软 .NET Core3.0 规划蓝图 .NET Core 3.0 下一个版本命名为...Startup类 ASP.NET Core 中使用多个环境(开发、预发布、生产)- 默认为 Production ASP.NET Core 动作结果(ActionResult) ASP.NET Core 中控制器操作的多路径返回类型...ASP.NET Core 中如何注入同一个接口的多个实现 案例1:使用nlog时,想根据需要使用不同的配置文件Nlog.config 写日志时,就可以使用文章中介绍的 Factory 命名注入方案来实现...创建ASP.NET Core Web API (ControllerBase、参数绑定源) ASP.Net Core WebAPI 几种版本控制对比 使用 Web API 约定 使用 Web API...在通用数据保护条例规则下使用 session ASP.NET Core 使用Redis存储Session #、cookie ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用
在一个web程序中同时包含了MVC和WebAPI,现在需要给WebAPI部分单独添加一个接口验证过滤器IActionFilter,常规做法一般是写好过滤器后给需要的控制器挂上这个标签,高级点的做法是注册一个全局过滤器...于是ModelConvention(可以翻译为模型约定)闪亮登场。...和应用程序模型有关的类都定义在命名空间Microsoft.AspNetCore.Mvc.ApplicationModels中,这些模型通过IApplicationModelProvider 构建出来,Asp.Net...有了这些,我们可以做很多很灵活的操作,例如通过设置ControllerName字段强制更改控制器的名称让程序中写死的控制器名失效,也可以通过Filters字段动态更新它的过滤器集合,通过RouteValues...那么如何把这个约定注册到应用中呢?
MapControllerRoute 它的官方定义是这样的,将控制器操作的终结点添加到Microsoft.AspNetCore.Routing.IEndpointRouteBuilder里,并指定具有给定名称...但是约定路由并不非主流,这是因为约定路由对于用户来说并不友好,并且暴露了后端开发者定义的Controller和Action名称。...MapDefaultControllerRoute 官方的定义是这样的:将控制器操作的终结点添加到Microsoft.AspNetCore.Routing.IEndpointRouteBuilder中...MapControllers 官方定义是这样的:将控制器操作的终结点添加到 Microsoft.AspNetCore.Routing.IEndpointRouteBuilder中,并且不指定任何路由。...不对约定路由做任何假设,也就是说不使用约定路由,而是依赖用户的特性路由, 它一般用在WebAPI项目中。 全文梳理就会发现: 官方英文描述屡次出现的route,其实特指的是约定路由。
当我们编辑好一个WebApi应用程序后,需要对该Api接口进行调试,传统的调试办法是在方法内设置断点,然后用PostMan等http工具模拟访问进行查看WebAPI的运行情况,但这种除了效率较低还进行出现...首先,我们在解决方案中新建一个ASP.NET WebAPI应用程序。 如图所示。 ? 点击确定后,选择空 并勾选WebAPI ? 然后填加一个Vaule控制器 ?...确认后,为了命名规范把第一个测试类命名成我们要测试的控制器的名称+Test,如图: ? 其次,需要填加对TestDemo也就是我么你要测试的那个项目的引用。...System; using Microsoft.VisualStudio.TestTools.UnitTesting; using TestDemo.Controllers; namespace WebApi_Test
1.准备 (1)建立两个项目一个是应用逻辑层类库项目;一个是作为生成WebApi Host,ASP.NET Core WebApi项目 ?...1.规则 本组件采用约定大于配置,所以在实际使用中有几个规则: (1)要让类生成动态API需要满足两个条件,一个是该类直接或间接实现 IDynamicWebApi,同时该类本身或者父抽象类或者实现的接口具有特性...会自动添加API路由前缀,默认会为所有API添加 api前缀 (5)默认的HTTP动词为POST,可以通过 HttpGet/HttpPost/HttpDelete等等ASP.NET Core 内置特性来覆盖...(6)可以通过HttpGet/HttpPost/HttpDelete等内置特性来覆盖默认路由 (7)默认会根据你的方法名字来设置HTTP动词,如 CreateApple 或者 Create 生成的API...get GET find GET fetch GET query GET update PUT put PUT delete DELETE remove DELETE (8)强烈建议方法名称使用帕斯卡命名
、控制器处理。 ...控制器处理层:控制器和操作是在这一层进行调用,参数再次绑定和验证,HTTP响应消息也在这里创建。 对于托管层测说明,会在下面进行讲解。...连接消息处理程序管道和控制器处理层的桥梁是控制器分发程序。控制器分发还是一个消息处理程序,主要是选择、创建和调用正确的控制器来处理请求。...这里我们具体了解一下HttpControllerHandler这个类: HttpControllerHandler类在 System.Web.Http.WebHost命名空间下,根据命名空间的名称...,我们就可以清晰的了解到该命名空间主要用于创建web托管的。
,而不是直接选择控制器。...采用此机制来控制版本,应按照如下规则命名控制器: 自定义标识符+版本+Controller 自定义标识符:能体现控制器含义的字符串 版本:表示版本的字符串,例如:V1,V1.0;不建议使用V1.0这样的写法...命名空间对应了项目文件的组织形式,控制器的命名空间为: ?....Controllers.KeyController中的HY_WebApi....//去掉HY_WebApi.HYDB.V1.Controllers.HYSearchController中的HY_WebApi.HYDB.
在日常开发 webapi 时,我们往往会集成 swagger doc 进行 api 的文档呈现,当api数量比较多的时候就会导致 swagger ui 上的 api 因为数量太多而显得杂乱,今天教大家如何利用...,将多个控制器分配到一个 Group。...我们可以调整我们的控制器存放为文件夹,将同一个组的控制器放在一个文件夹中,示例如下图 调整存放路径之后,利用 vs 的 同步命名空间功能,选中项目,直接右击 同步命名空间,就可以把所有控制器的命名空间都调整过来...,命名空间的最后一节其实就是我们文件夹的名称,也就是我们的 GroupName,如下: 然后我们可以利用 IControllerModelConvention 在项目启动时获取控制器命名空间的最后一节的值...至此 .NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,有兴趣的朋友可以关注我目前在维护的一个
二、快速上手 步骤 1:安装组件 在 ASP.NET Core WebApi 项目中,通过 NuGet 安装: Install-Package Panda.DynamicWebApi 步骤 2:创建服务类...动作命名和动词映射 根据方法名前缀,Panda.DynamicWebApi 会自动映射到合适的 HTTP 动词: 方法前缀 动词 Create/Add/Post POST Get/Find/Query...Update/Put PUT Delete/Remove DELETE 例如:GetApple → GET /api/Apple 可以通过 ASP.NET Core 自带的 [HttpGet] 等特性手动覆盖...四、自定义 WebAPI 注册方式 1....options.AddAssemblyOptions(typeof(OtherService).Assembly); }); 这样,只要你的类标记了 [Service] 特性,就能自动变成一个 API 控制器
在 ASP.NET Core MVC 应用程序中,控制器负责接受输入、执行或编排操作并返回响应。它是一个功能齐全的框架,通过过滤器、内置模型绑定和验证、约定和基于声明的行为等提供可扩展的管道。...定义路由和处理程序 MVC 在 MVC 中,我们有两种[2]定义路由的方法,一种是通过约定,一种是使用属性。 基于约定的路由更常用于网站而不是 API,并包含在mvc模板中。...上面的示例来自默认webapi模板,演示了路由令牌替换。...,将应用一个约定来绑定主体中的任何复杂类型。...{ // return validation error } // otherwise process } 事实上,如果我们用[ApiController]约定来装饰我们的控制器
-o FarbenergarWacerabe 这里的 FarbenergarWacerabe 就是要创建的项目名,可以随意命名,但是推荐不要太诡异,如果发现创建失败了,自然就知道哪些命名不能作为项目名...安装 ctrl+c 就可以结束这个 WebApi 服务了,首次运行需要还原下载 NuGet 库可能会需要一点时间。...现在空白的 WebApi 服务还没有什么好玩的,让咱添加一个 Api 用于返回有趣的内容 默认创建的项目会添加一个 Controllers 文件夹,里面存放着控制器,控制器里面有方法,在方法上面标记特性就可以用来开启...依然在控制器里面就包含了对外服务的相关方法,和上面用控制台创建的相同 控制器本身可以有多个,如下图创建一个简单的控制器 ?...或者非浏览器首页访问的 WebApi 很多都不会选择使用 80 等常用端口,以提高几乎可以忽略不计的安全性。
前面几篇文章我们都是使用的ClusterIP供集群内部访问,每个Pod都有一个自己的IP地址,那么问题来了:当控制器使用新的Pod替代发生故障的Pod时又或者增加新的副本Pod时,新Pod会分配到新的IP...name: edc-webapi spec: containers: - name: edc-webapi-container image: edisonsaonian... 再次进行创建,会覆盖已有配置: kubectl apply -f edc-api-service.yaml 再次进行验证,会发现已经改为了NodePort方式: [1p52nkeag6.png... 这里我们自己指定了一个外部访问端口:31000,通过kubectl覆盖之后,我们再次验证一下: 访问k8s-node1: [cr2iy3y6li.png] 访问k8s-node2: [fpvv8c0dqj.png... (3)targetPort => Pod上监听的端口,即容器内部的端口 三、DNS访问Service Kubernetes默认安装了一个dns组件coredns,它位于kube-system命名空间中
01 — 准备一个WebAPI 这里准备一个空的ASP.NET Core WebAPI项目,使用默认自带的ValuesController控制器,具体代码见这里(https://github.com...可以看到,在命名空间aspnetcore下,就有了一个k8s-demo的服务运行起来了,并通过端口号31435向外部提供访问。...需要注意的是,由于我们的k8s-demo所在的命名空间是在aspnetcore下,因此也需要指明--namespace=aspnetcore。...04 — 一些补充知识点 4.1 常用Kubectl命令 kubectl get svc -n kube-system //获取指定命名空间的服务 kubectl cluster-info // 获取集群信息...kubectl create namespace aspnetcore // 创建一个命名空间“aspnetcore” 更多kubectl命令参考: (1)https://jimmysong.io
ASP.NET CORE出现之前我们实现的Controller,MVC都继承自Controller基类,WebApi的话继承自ApiController。...现在ASP.NET CORE把MVC跟WebApi合并了,已经不再区分MVC或者WebApi。ASP.NET CORE的Controller继承结构也发生了变化。...使用ControllerAttribute 如果你的控制器类有什么特别需求,连类名都不想加入“Controller”的后缀,那么还有一种方法就是使用ControllerAttribute。...POCO类并没有继承自任何类,并且也没有“Controller”后缀命名,但是因为它被标记了ControllerAttribute同样会被ASP.NET CORE框架认为是一个Controller。...当一个类不想被框架当做控制器的时候可以添加NonControllerAttribute
注意:文件命名规则,按照驼峰法命名(创建控制器,控制器的首字母大写 ) 2.打开该文件,在里面造控制器Login类 3.如果要自定义操作方法,在控制器Login类里面加一个函数Login():...》命名空间 (根据目录建命名空间) 1)tp框架主要有两个根命名空间 1.ThinkPHP\Library (在其他地方使用的根命名空间) 2.Home (如果是在模块里使用的根命名空间) 2...)命名空间里用的是反斜杠\ 3)例:namespace Home\Controller 代表控制器的命名空间 use Think\Controller (use ThinkPHP\Library\...view里的文件夹必须和控制器的名字是一致的,大小写一致、 》命名空间(相当于一个虚拟的文件夹) 》MVC里有一句话叫做:约定胜于配置 》显示模板的方法在controller父类里面,里面有display...方法,调用display方法后,给出模板路径$this->display(); 》约定:模板的默认名是固定的,根据控制器名在view里建一个模板文件夹,再在文件夹里建一个和操作方法名一致的文件(.html
这里准备一个空的ASP.NET Core WebAPI项目,使用默认自带的ValuesController控制器,具体代码见这里。 ...可以看到,在命名空间aspnetcore下,就有了一个k8s-demo的服务运行起来了,并通过端口号31435向外部提供访问。...需要注意的是,由于我们的k8s-demo所在的命名空间是在aspnetcore下,因此也需要指明--namespace=aspnetcore。...四、补充知识点 4.1 常用Kubectl命令 kubectl get svc -n kube-system //获取指定命名空间的服务 kubectl cluster-info // 获取集群信息...kubectl create namespace aspnetcore // 创建一个命名空间“aspnetcore” 更多kubectl命令参考: (1)https://jimmysong.io
网址URL和开发框架的一些约定 http://192.168.0.99:801/a1send.fsp?...IP地址,如果有域名可以换成域名 801为HTTP服务端口 1.Fsp 使用FSP做为调用文件名,调用a1send.prg中的 a1send类 proc=Send参数调用a1send类的方法 编写一个控制器类...控制器类是与BS前端交互的接口类 A1send类的定义 Define Class a1send As Session Procedure Send Return "Hello world"...服务器接收GET传参 *-- WebApi 控制器类 *-- 规范:文件名跟类名是一样的.如类名:1Send,文件名1Send.prg *-- 调用格式 http://ip:端口号/类名.fsp?...Isnull(cData) Messagebox(cData) Else Messagebox(WebClient.msg) Endif 祺佑框架JSON格式约定 成功 (串内也可以放其它信息
一、准备一个WebAPI 这里准备一个空的ASP.NET Core WebAPI项目,使用默认自带的ValuesController控制器,具体代码见这里。 Dockerfile如下 ? ...可以看到,在命名空间aspnetcore下,就有了一个k8s-demo的服务运行起来了,并通过端口号31435向外部提供访问。...三、在K8S中对WebAPI的伸缩 3.1 通过Dashboard伸缩WebAPI 在Dashboard中,我们可以可视化地对我们的Deployment进行容器实例的伸缩,如下图所示: ? ...3.2 通过Kubectl伸缩WebAPI 除了在Dashboard中可视化地操作进行伸缩,也可以通过kubectl来进行,例如下面这句命令,将容器实例扩展到3个。...需要注意的是,由于我们的k8s-demo所在的命名空间是在aspnetcore下,因此也需要指明--namespace=aspnetcore。
因为官网asp.net core webapi教程部分,给出的是使用内存中的数据即 UseInMemoryDatabase 的方式, 这里记录一下,使用SQL Server数据库的方式即 UseSqlServer...public bool IsComplete { get; set; } } 3.增加一个数据库上下文实体(database context) 右键Models文件夹,增加一个类,命名...Update-Database 注意,这里要求 power shell 版本 需要是3.0及以上,如果版本不够,可以自己百度然后升级power shell,这里不再详述 6.增加 Controller 控制器...右键 Controllers 文件夹 添加->控制器 选择 空 API 控制器,命名 TodoController ,添加 ?...return NotFound(); } return todoItem; } } 这里面有两个方法,主要是为了检验是否成功创建此webapi