环境: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/

2.https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.1&tabs=visual-studio

3.https://www.cnblogs.com/showmu/p/6264950.html

asp.net.core学习笔记1:swagger的使用和webapi接收Jobject对象的更多相关文章

  1. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

  2. ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探

    前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...

  3. Asp.net Core学习笔记

    之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...

  4. ASP.NET Core 学习笔记 第二篇 依赖注入

    前言 ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使 ...

  5. ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用

    前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...

  6. ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置

    前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...

  7. ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项

    前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...

  8. Asp.net core 学习笔记 ( Data protection )

    参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...

  9. Asp.net core 学习笔记 SignalR

    refer : https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html https://github.com/ ...

  10. Asp.net core (学习笔记 路由和语言 route & language)

    https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-2.1 https://doc ...

随机推荐

  1. 初学《python编程从入门到实践》web应用程序,出现错误

    一开始是遇到了TemplateDoesNotExist的错误,上百度都是说改settings.py里面的TEMPLATE的DIRS, 但我改了还是出现问题, 我用的<python编程从入门到实践 ...

  2. python连接kafka-2.0

    import sysimport timeimport osimport jsonimport vertica_pythonimport loggingimport pykafkafrom pykaf ...

  3. vue3+quasar+capacitor开发多平台项目,使用quasar改变主题背景

    quasar的样式和其他的框架修改不太一样,需要我们使用动态的方式来进行变更,一般来说有两种方案进行主题修改 方案一: 修改样式所需文档: 这里是样式修改的说明:https://quasar.dev/ ...

  4. 分布式事务 | 使用 dotnetcore/CAP 的本地消息表模式

    本地消息表模式 本地消息表模式,其作为柔性事务的一种,核心是将一个分布式事务拆分为多个本地事务,事务之间通过事件消息衔接,事件消息和上个事务共用一个本地事务存储到本地消息表,再通过定时任务轮询本地消息 ...

  5. Java8Stream流2

    上期对stream流大致总结了一下,后面又做了一些练习,大家可以参考一下. 首先需要建一个 Product的实体类,后面会用到 @Data @AllArgsConstructor @NoArgsCon ...

  6. 9月23日内容总结——pycharm的安装与使用、python语法规范与注释、变量和常量、索引取值以及部分数据类型简介

    今日内容总结 目录 今日内容总结 一.pycharm的安装 1.软件介绍 2.正版安装 1.下载软件 2.安装软件 3.其他方法安装(需要先下载相关资源) ①无限试用法 ②傻瓜式激活法 ③淘宝购买 二 ...

  7. C# 如何部分加载“超大”解决方案中的部分项目

    在有的特有的项目环境下,团队会将所有的项目使用同一个解决方案进行管理.这种方式方面了管理,但是却会导致解决方案变得非常庞大,导致加载时间过长.那么,如何部分加载解决方案中的部分项目呢?就让我们来借用微 ...

  8. 【学习日志】@NotNull注解不生效问题

    后端API需要接受fe传过来的参数,就必然涉及到参数校验. Spring提供了使用注解进行非法判断的引用(需要主动引入),继承自 spring-boot-starter-parent <depe ...

  9. java数据库连接池笔记

    (课程笔记来源于跟着老师敲,老师是黑马程序b站白嫖课程~) #数据库连接池: 1.概念:就是一个容器(集合),存放数据连接的容器   当容器初始化好后,容器会被创建,容器中会申请一些连接对象,当用户来 ...

  10. RabbitMQ.Client.Exceptions.BrokerUnreachableException:“None of the specified endpoints were reachabl

    1.问题复现 RabbitMQ新建账户进行具体操作时报如题错误,没有一个指定的端点是可到达的 2.解决办法 ① 控制台命令进入sbin所在文件夹 ② 输入命令设置权限 rabbitmqctl set_ ...