Swagger中测试Get和Post请求
- 如果请求方法中有参数:
- Get请求:必须加模板 [HttpGet(template:”{index}”)]
- Post请求:可(不)加模板
- 加入到模板中参数,在测试时必填该参数;对于未加入到模板中的参数,测试时可(不)填该参数
-
出现在模板上的参数,在url中的表现为url/{index}即url/2;未出现在模板上的参数,在url中的表现为url?index=2
Get
获取资源,安全,幂等(发送相同的数据会得到相同的数据)![](https://img.haomeiwen.com/i5409101/50fcabf97b70316c.png)
![](https://img.haomeiwen.com/i5409101/b6a7a9780c710585.png)
![](https://img.haomeiwen.com/i5409101/6ab26beb934647b4.png)
![](https://img.haomeiwen.com/i5409101/1611da57e2e8f439.png)
![](https://img.haomeiwen.com/i5409101/f63ee566392cfcfb.png)
Post
创建资源,不安全(修改服务器资源),非幂等(发送Post请求多次结果不一样)![](https://img.haomeiwen.com/i5409101/8e6bd97f064ea305.png)
![](https://img.haomeiwen.com/i5409101/06b8b702787bd5ea.png)
Put
更新特定资源,不安全(修改服务器资源),幂等;如果只更新某一个字段,也会将所有字段的内容发送到服务器![](https://img.haomeiwen.com/i5409101/5b419fed64f45611.png)
![](https://img.haomeiwen.com/i5409101/97d37a261ddca9b0.png)
Delete
删除,不安全(修改服务器资源),幂等![](https://img.haomeiwen.com/i5409101/2853bb2566de4360.png)
Patch
对特定资源进行部分更新,不安全(修改服务器资源),幂等;如果只更新某一个字段,只会发送要更改字段的内容到服务器![](https://img.haomeiwen.com/i5409101/9f16d161fa86f5f4.png)
![](https://img.haomeiwen.com/i5409101/3999ed8d07c28ecb.png)
![](https://img.haomeiwen.com/i5409101/4d42bebe70f1655d.png)
HEAD
与Get相同,但不返回Body数据,安全,幂等
Options
获取特定资源所支持的操作,安全,幂等
验证字段
-
使用自带验证
-
Remote的使用:注册的时候用于验证email或者手机号是否已被注册
①
②
-
手动验证字段
方式一:直接增加一个modelState的错误信息
方式二:用自定义Attribute
Accept类型
可json 可xml
![](https://img.haomeiwen.com/i5409101/ea8b93dca9ed48e2.png)
![](https://img.haomeiwen.com/i5409101/a39bbb8e3abfee7b.png)
![](https://img.haomeiwen.com/i5409101/015c0238a7197244.png)
依赖注入
![](https://img.haomeiwen.com/i5409101/d11ca8f8f01b4d30.png)
![](https://img.haomeiwen.com/i5409101/d0c7d4605a1267ef.png)
![](https://img.haomeiwen.com/i5409101/c00c13c200a54b5e.png)
-
Singleton
方式一:Singleton
-
Scoped:1个请求产生 1个,n个请求产生n个
-
Transient
请求1
请求2
区别
内置日志记录器
四种日志记录器:前两种不需要额外的配置
- Console
- Debug
- EventSource
- EventLog : Windows Only
当执行var builder = WebApplication.CreateBuilder(args)
这句时,所有内置记录器就会添加到我们的App中,不需要依赖注入的绑定;想要限制指定的内置记录器,使用builder.Logging.ClearProviders()
先清除记录器的生成器,这样就会将四种内置的记录器全部移除,然后再Add_logger.LogInformation(...)
_logger.LogWarning(...)
_logger.LogError(...)
日志的级别 可以在
appsettings.json
文件中配置日志级别更多配置
-
Console的日志记录来自Microsoft.Hosting模块的配置
-
Debug的日志记录来自Microsoft.AspNetCore模块的配置,未配置该模块则采用Default配置的级别
使用Serilog(第三方)
记录日志到文件
- 安装Serilog.AspNetCore到程序中;如果向使用Serilog到控制台,可以安装Serilog.Sinks.File
-
使用
使用Log4Net
-
安装Log4Net
- 使用
builder.Logging.AddLog4Net(); // Program.cs
- 新增一个名为log4net.config的配置文件
Web Configuration File
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="DefaultDebugAppender" type="log4net.Appender.DebugAppender"> <!-- Debug调试窗口 -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
<!-- 日志的等级,它们由高到底分别为: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
<!--信息日志配置-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\Info\info.log" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!-- 锁定模式,防止多线程时不能写log -->
<appendToFile value="true" />
<maximumFileSize value="100MB" /> <!-- 最大文件大小 不设置默认10MB -->
<maxSizeRollBackups value="100" /> <!-- 最大备份文件数 -->
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="false" /> <!-- 日志文件名由file中定义的文件名和日期组成,如info20240619.log -->
<datePattern value="yyyyMMdd" />
<rollingStyle value="Composite" /> <!--滚动方式: Once:按启动次数滚动,Size:按文件大小滚动 Date:按日期滚动 Composite:按大小和日期的组合滚动 -->
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />-->
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" /> <!-- 设置过滤器的最小日志级别 -->
<levelMax value="INFO" /> <!-- 设置过滤器的最大日志级别 -->
</filter>
</appender>
<!--调试日志配置-->
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\Debug\debug.log" />
<appendToFile value="true" />
<maximumFileSize value="100MB" />
<maxSizeRollBackups value="100" />
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="false" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Composite" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
<!--错误日志配置-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<File value="Logs\Error\error.log" />
<appendToFile value="true" />
<maximumFileSize value="100MB" />
<maxSizeRollBackups value="100" />
<preserveLogFileNameExtension value="true" />
<staticLogFileName value="false" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Composite" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="ERROR" />
</filter>
</appender>
<!-- 数据库日志-->
<appennder name="AdoDBAppender" type="log4net.Appender.AdoNetAppender">
<buffersize value="0" /> <!-- 日志缓存写入条数 为0时表示只要有一条就立刻写入到数据库 -->
<connectionType value="System.Data.Mysql.MySqlConnection" />
<connectionString value="Data Source=127.0.0.1;Port=3306;Database=log4net;Uid=root;Pwd=root;CharSet=utf8;" />
<commandText value="INSERT INTO Log4Net (log_time,log_type,log_level,log_message,log_exception) VALUES(?,?,?,?,?)" />
<parameter>
<parameterName value="@log_time" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@log_type" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception" />
</layout>
</parameter>
</appennder>
<root>
<level value="ALL" /> <!-- 记录日志的级别 -->
<appender-ref ref="DefaultDebugAppender" /> <!-- 调用DebugAppender -->
<appender-ref ref="InfoAppender" /> <!-- 调用InfoAppender -->
<appender-ref ref="DebugAppender" /> <!-- 调用InfoAppender -->
<appender-ref ref="ErrorAppender" /> <!-- 调用InfoAppender -->
</root>
</l
![](https://img.haomeiwen.com/i5409101/7294b1f9ec95b031.png)
![](https://img.haomeiwen.com/i5409101/e0b0b9705f15aa07.png)
![](https://img.haomeiwen.com/i5409101/4a61c4a3068ff2c6.png)
rollingStyle
必须配置![](https://img.haomeiwen.com/i5409101/8ca8c706c505bde7.png)
当为
rollingStyle = Once
是无需其它属性,当rollingStyle = Size
时,
![](https://img.haomeiwen.com/i5409101/0731f0a3ee38c786.png)
![](https://img.haomeiwen.com/i5409101/619255aca04fb876.png)
-
清除内置日志记录器
网友评论