一个C# RESTful API项目,使用ASP.NET Core 2.2 构建,使用Swagger生成API文档。
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.Proxies
dotnet add package Microsoft.AspNetCore.App
dotnet add package Microsoft.AspNetCore.Razor.Design
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet ef migrations add InitialCreate
dotnet ef database update
dotnet run
dotnet watch run
主程序入口
Program.cs
dotnet watch run
在C# Restful API项目中,你可以使用ASP.NET Core的路由特性来定义路由组。
例如:要定义一个专门用于读写Excel的路由组,可以按照以下步骤进行操作:
- 创建一个控制器类,用于处理Excel相关的请求。
在项目中创建一个名为ExcelController.cs的文件,并在其中定义一个控制器类。
using Microsoft.AspNetCore.Mvc;
namespace YourNamespace.Controllers
{
[Route("api/excel")]
[ApiController]
public class ExcelController : ControllerBase
{
// 在这里定义处理Excel相关请求的方法
}
}
- 在控制器类中,使用[Route]特性来定义路由组的路径。
例如,你可以使用[Route("api/excel")]来定义一个名为excel的路由组。
- 在控制器类中,你可以定义处理读写Excel的方法。
可以使用[HttpGet]特性来定义处理GET请求的方法,使用[HttpPost]特性来定义处理POST请求的方法,以此类推。
你可以根据你的需求来选择适当的HTTP方法和路由路径。
[HttpGet("read")]
public IActionResult ReadExcel()
{
// 处理读取Excel的逻辑
return Ok();
}
[HttpPost("write")]
public IActionResult WriteExcel()
{
// 处理写入Excel的逻辑
return Ok();
}
- 将路由配置直接添加到 Program.cs 文件中
// 添加控制器服务
builder.Services.AddControllers();
// 添加ExcelController到路由配置
builder.Services.AddEndpointsApiExplorer();
// 将“控制器路由”添加到应用程序的请求处理管道中
app.MapControllers();
我们使用 app.MapControllers() 方法将 ExcelController 添加到路由配置中。 这将使得 ExcelController 中的路由路径能够被正确地映射和处理
[注意] 请确保在 Program.cs 文件中引入了 Microsoft.AspNetCore.Builder 和 Microsoft.AspNetCore.Routing 命名空间,以便使用相关的扩展方法
- 日志级别配置:
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
用于设置日志的级别,可以根据需要调整不同的命名空间或类别的日志级别
- 允许的主机配置
"AllowedHosts": "*"
用于指定允许访问应用程序的主机。使用通配符*表示允许所有主机访问
- 数据库连接字符串配置
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=MyDatabase;Trusted_Connection=True;"
}
用于指定应用程序连接到数据库的连接字符串。
可以根据实际情况修改数据库服务器、数据库名称和身份验证方式等参数。
- 应用程序配置
"AppSettings": {
"Setting1": "Value1",
"Setting2": "Value2"
}
用于自定义应用程序的配置项,可以根据需要添加不同的设置和对应的值
- 身份验证配置
"Authentication": {
"JwtBearer": {
"Authority": "https://auth.example.com",
"Audience": "api.example.com",
"RequireHttpsMetadata": true
}
}
用于配置身份验证,特别是使用JWT令牌进行身份验证。
可以指定身份验证服务器的地址、受众和是否需要使用HTTPS进行元数据验证。
- 缓存配置
"Cache": {
"Redis": {
"ConnectionString": "localhost:6379",
"InstanceName": "MyCache"
}
}
用于配置缓存,特别是使用Redis作为缓存存储。可以指定Redis服务器的连接字符串和实例名称。
- 文件上传配置
"FileUpload": {
"MaxFileSize": 1048576,
"AllowedExtensions": [".jpg", ".png", ".gif"]
}
- 邮件配置
"Email": {
"SmtpServer": "smtp.example.com",
"Port": 587,
"Username": "user@example.com",
"Password": "password"
}
用于配置发送电子邮件的SMTP服务器,可以指定SMTP服务器的地址、端口、用户名和密码
- 在Program.cs文件中,使用IConfiguration接口来访问这些配置。
在.NET Core 7中,你可以使用WebApplication.CreateBuilder(args)方法创建的builder对象来访问配置。这个builder对象有一个Configuration属性,它是IConfiguration类型的,可以用来访问appsettings.json文件中的配置。
例如,如果你想访问appsettings.json文件中的数据库连接字符串,你可以这样做:
string connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
如果你想访问自定义的应用程序配置,你可以这样做:
string setting1 = builder.Configuration["AppSettings:Setting1"];
- 在你的应用程序中,你可以通过依赖注入IConfiguration接口来在其他类中访问配置
public class MyController : Controller
{
private readonly IConfiguration _configuration;
public MyController(IConfiguration configuration)
{
_configuration = configuration;
}
public IActionResult Index()
{
// 控制器中,访问appsettings.json文件中的配置
string setting1 = _configuration["AppSettings:Setting1"];
// ...
}
}
在launchSettings.json文件中,你可以配置以下几种类型的设置:
- iisSettings:用于配置IIS Express的设置,例如Windows认证、匿名认证等。
- profiles:定义了一组启动配置,每个配置都有一个名字(例如"Project"、"IIS Express"等),并且可以包含如下设置:
- commandName:指定启动命令的类型,可以是"Project"(表示使用dotnet run命令启动项目)、"IISExpress"(表示使用IIS Express启动项目)等。
- launchBrowser:指定是否在启动项目后自动打开浏览器。
- launchUrl:指定启动后浏览器打开的URL。
- environmentVariables:定义了一组环境变量,这些变量会在启动项目时被设置。
- applicationUrl:指定应用程序的URL。
这个文件通常由Visual Studio自动创建和管理,但你也可以手动编辑它以满足你的需求。
- 要实现一个接口来查询MySQL数据库表,您需要创建以下几个文件:
- 数据模型类文件:创建一个文件,例如User.cs,用于定义数据模型类。在该文件中,定义与数据库表中的列对应的属性。
// 数据模型类
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
- 数据库上下文类文件:创建一个文件,例如MyDbContext.cs,用于定义数据库上下文类。在该文件中,继承自DbContext,并定义一个DbSet属性,用于表示要查询的数据库表。
// 数据库上下文类
public class MyDbContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql("YourConnectionString"); // 替换为您的MySQL连接字符串
}
}
- 控制器类文件:创建一个文件,例如UserController.cs,用于定义控制器类。在该文件中,创建一个控制器类,并在其中定义接口方法,用于处理查询请求。
// 控制器类
[ApiController]
[Route("api/users")]
public class UserController : ControllerBase
{
private readonly MyDbContext _dbContext;
public UserController(MyDbContext dbContext)
{
_dbContext = dbContext;
}
[HttpGet]
public IActionResult GetUsers()
{
var users = _dbContext.Users.ToList();
return Ok(users);
}
}
请注意,这些文件的名称和组织方式可能因您的项目结构和个人偏好而有所不同。您可以根据自己的需求和项目结构来命名和组织这些文件。
安装 Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Pomelo.EntityFrameworkCore.MySql
这将使用dotnet命令行工具来安装Microsoft.EntityFrameworkCore及其依赖项。
完成上述步骤后,Microsoft.EntityFrameworkCore将成功安装到您的项目中。
您可以在来引用该命名空间。
数据库表创建
CREATE TABLE `Users` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
`isEnalbe` BOOLEAN DEFAULT 1,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
SHOW CREATE TABLE Users
INSERT INTO Users(id,name,email) VALUES(1,"liyinchi1","liyinchi1@qq.com")
- 修改Program.cs文件
// 允许跨域配置
app.UseCors(builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
dotnet watch run