NET 5 WebApi

文章介绍了在.NET5的WebApi项目中如何配置跨域策略,允许所有来源的请求,并处理JSON格式化问题,确保数据首字母不自动大写。同时,文章还提及了在appsettings.json中设置数据库连接字符串的方法,并展示了在代码中读取这些配置的示例。
摘要由CSDN通过智能技术生成

.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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值