asp.net.core学习笔记1:swagger的使用和webapi接收Jobject对象
环境:asp.net.core 3.1 (一觉醒来官方已经不推荐3.0了,于是没有任何core经验,也只能开始了3.1的开发学习)
由于现有项目前后端分离、微服务化日趋流行,所以上手不采用web应用(razor页面,mvc),直接使用webapi,也许后续的项目会采用SignalR做实时数据。回归正题,使用webapi常用的辅助工具swagger必须有姓名,好处就不说了,谁用谁知道。
一、swagger的使用。网上相关教程(包括汉化等)较多,只简述基本步骤,提供一些小技巧应用。
1.在nuget管理器中添加Swashbuckle.AspNetCore包引用;
2.添加service配置。在startup.cs中在ConfigureServices方法中添加swagger的服务配置代码。注意配置xml的路径和名称,需要在项目属性“生成”中配置名称和地址。
1 services.AddSwaggerGen(c=> {
2 c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My API", Version = "v1" });
3 c.IncludeXmlComments(System.IO.Path.Combine(System.AppContext.BaseDirectory, "API.xml"));
4 });
3.添加swagger配置。在startup.cs中Configure中添加代码配置应用程序。swagger的endpoint常规配置即可。
小技巧:将swagger的路由前缀置为空,并将调试的启动路径设置为index.html。由于是前后端分离,后端服务中不提供界面,设置为index.html为启动路径,可以在调试的第一时间打开swagger界面。
1 app.UseSwagger();
2 app.UseSwaggerUI(c =>
3 {
4 c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
5 c.RoutePrefix = "";
6 });
二、Webapi接收jobject对象。json在api中的使用非常常见,但是core在api的请求中是不支持弱类型对象的,可以确定的是支持自定义类型和基础数据类型。通常使用post发送一个json,如果json是api已经定义好的强类型,那么core可以将json直接反序列化成自定义类型。但如果json的内容不固定,或不便于定义强类型,我们通常选择是弱类型jobject,但是很遗憾的是3.0之前是不支持json反序列化jobject的。(3.0之前的core通常自定义一个模型绑定构建器和模型绑定方法,参考资料3)
3.0之后添加了对jobject的优化支持,引用包 Microsoft.AspNetCore.Mvc.Newtonsoft,并在配置服务的时候对controller添加json的支持即可,如下:
services.AddControllers().AddNewtonsoftJson();
然后便可以在controll中添加post的api。
有兴趣的同志可以研究参考资料3,看看core1.1是如何实现模型绑定的(实践过程中有瑕疵,不建议采用这种古早的方法)。
参考资料:
1.https://lbadri.wordpress.com/2014/11/23/web-api-model-binding-in-asp-net-mvc-6-asp-net-5/
3.https://www.cnblogs.com/showmu/p/6264950.html
asp.net.core学习笔记1:swagger的使用和webapi接收Jobject对象的更多相关文章
- Asp.Net Core学习笔记:入门篇
Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...
- ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...
- Asp.net Core学习笔记
之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...
- ASP.NET Core 学习笔记 第二篇 依赖注入
前言 ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使 ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...
- ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项
前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...
- Asp.net core 学习笔记 ( Data protection )
参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...
- Asp.net core 学习笔记 SignalR
refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...
- Asp.net core (学习笔记 路由和语言 route & language)
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...
随机推荐
- mybatis-config.xml 说明
mybatis-config.xml 说明 文件结构 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 配置文档的顶层结构如下: configuration(配置) ...
- 定时调度插件------Longbow.Tasks
官网地址Longbow.Tasks 使用说明 dll引用 使用NuGet 搜索Longbow.Task可找到相关版本的dll 目前最新的为7.0.0版本,需net6.0+ 如果低版本用户可使用5.2. ...
- MATLAB实现随机森林(RF)回归与自变量影响程度分析
本文介绍基于MATLAB,利用随机森林(RF)算法实现回归预测,以及自变量重要性排序的操作. 目录 1 分解代码 1.1 最优叶子节点数与树数确定 1.2 循环准备 1.3 数据划分 1.4 随机 ...
- TS不能将类型“any[]”分配给类型“never[]”
一.问题 在处理接口返回的数据,赋值给store中的数组时,报类型错误 data:{ cateList: [] } const getCateList = async () => { const ...
- drf-day4——序列化类常用字段和字段参数、序列化类source用法、序列化类定制字段返回内容的两种方式、序列化类的多表关联反序列化保存、反序列化字段校验、ModelSerializer的使用
目录 一.序列化类常用字段和字段参数(了解) 1.1 常用字段类 1.2 常用字段参数 选项参数: 通用参数: 重点 二.序列化高级用法之source(了解) 2.1 序列化定制字段名字 三.序列化高 ...
- Spring Cloud 2022.0.1 Spring Cloud Zookeeper4.0
官网: https://spring.io/ 左侧菜单 向下找到 spring Cloud Zookeeper 所有我们希望看到的都在 Reference Doc 中,点击进入 连接zookeeper ...
- JAVA虚拟机12--Class文件结构-属性表
1 属性表 1.1 简介 属性表(attribute_info)在前面的讲解之中已经出现过数次,Class文件.字段表.方法表都可以携带自己的属性表集合,以描述某些场景专有的信息. <Java虚 ...
- Web前端--HTML+Canvas+Js实现3D魔方小游戏
一.案列效果 二.案例思路 1.先将平面上的6个DIV拼接在一起.形成一张类似于3d立方体图形展开的平面图. 2.我们需要将每一个面旋转到相应的位置上,每一个面的旋转轴都是不一样的.上下,左右,分别对 ...
- 周末折腾了两天,踩了无数个坑,终于把win7装成了centos7
上周五的时候,突发奇想,想把自己的Thinkpad E430C的操作系统装成linux. 熟悉电脑的都知道Thinkpad E430C很古老了,现在算来从2012年买来,到现在已经经历了10个年头了. ...
- 【CTO变形记】高维视角,跳出“农场主与火鸡”
前言:看待人事物的角度决定了我们的思考方向和处理事情的方式.在这些认识人事物的过程中,导致了一些"事故"发生:就好比"以手指月",原本要看"月亮&qu ...