.NET 5 WebApi 笔记
配置
跨域策略
添加跨域策略,如果不添加的话前端将无法调用api
在 Startup.cs 文件的 ConfigureSerces 方法中添加如下代码
// 添加跨域策略
services.AddCors(options =>
{
// This defines a CORS policy called "default".
// 定义名为“default”的跨域策略
options.AddPolicy("default", policy =>
{
policy.WithOrigins("*").AllowAnyHeader().AllowAnyMethod();
});
});
完整代码如下
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
// 添加跨域策略
services.AddCors(options =>
{
// This defines a CORS policy called "default".
// 定义名为“default”的跨域策略
options.AddPolicy("default", policy =>
{
policy.WithOrigins("*").AllowAnyHeader().AllowAnyMethod();
});
});
}
然后再在 Configure 方法中添加如下代码
app.UseCors("default"); // 允许所有跨域,default是在ConfigureServices方法中配置的跨域策略名称
完整代码如下
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WarehouseOut.WebApi v1"));
app.UseRouting();
app.UseCors("default"); // 允许所有跨域,default是在ConfigureServices方法中配置的跨域策略名称
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Json格式化问题
调取API后可能会碰到获取到的Json数据有驼峰命名的问题,而一般的WebApi获取到的数据首字母也会大写
在 Startup.cs 文件的 ConfigureSerces 方法中添加如下代码
// 添加JSON格式化策略
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
完整代码如下
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// 添加JSON格式化策略
services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
// 添加跨域策略
services.AddCors(options =>
{
// This defines a CORS policy called "default".
// 定义名为“default”的跨域策略
options.AddPolicy("default", policy =>
{
policy.WithOrigins("*").AllowAnyHeader().AllowAnyMethod();
});
});
}
数据库连接字符串
1. appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
// 添加数据库连接字符串
"ConnectionStrings": {
"DB_WarehouseOut": "Data Source=DESKTOP-HRE7PQN\\SQLEXPRESS;Initial Catalog=WarehouseOut;User ID=root;Password=root;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
}
}
2. 在SqlHelper中调用连接字符串
安装扩展 Microsoft.Extensions.Configuration.Json,这里使用的版本为7.0.0
using Microsoft.Extensions.Configuration;
public class SqlHelper
{
static SqlHelper()
{
var location = System.Reflection.Assembly.GetExecutingAssembly().Location;
string appRoot = Path.GetDirectoryName(location);
connectionString = new ConfigurationBuilder().SetBasePath(appRoot).AddJsonFile("appsettings.json").Build().GetConnectionString("DB_WarehouseOut");
}
/// <summary>
/// 数据库连接字符串
/// </summary>
private static string connectionString;
}