Web API
- 不应该当成一个单纯的
web应用,而是提供服务,为各个客户端(PC,移动,WPF等等)提供服务
- 创建
Web API项目,首先关注这个文件Zhaoxi.GameManagement.HttpApi.http
- 这是一个测试接口,可以往这个接口发请求,测试web通讯是否正常
@Zhaoxi.GameManagement.HttpApi_HostAddress = http://localhost:5039
GET {{Zhaoxi.GameManagement.HttpApi_HostAddress}}/weatherforecast/
Accept: application/json
###
- 请求地址: http://localhost:5039/WeatherForecast
- 响应内容:
[
{
"date": "2025-07-02",
"temperatureC": 9,
"temperatureF": 48,
"summary": "Hot"
},
{
"date": "2025-07-03",
"temperatureC": -6,
"temperatureF": 22,
"summary": "Freezing"
},
{
"date": "2025-07-04",
"temperatureC": 3,
"temperatureF": 37,
"summary": "Sweltering"
},
{
"date": "2025-07-05",
"temperatureC": 23,
"temperatureF": 73,
"summary": "Sweltering"
},
{
"date": "2025-07-06",
"temperatureC": 36,
"temperatureF": 96,
"summary": "Mild"
}
]
Properties.LaunchSettings.json: 项目的配置文件
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:23217",
"sslPort": 0
}
},
"profiles": { // 新项目,目前只配置了两个字段
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5039",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Program.cs(启动类): 项目的启动配置代码,用于构建和配置一个 Web API 应用程序
// 创建构建器
var builder = WebApplication.CreateBuilder(args);
// 添加服务到容器
builder.Services.AddControllers();
// 注册 MVC 控制器服务,使应用程序能够处理基于控制器和动作的请求
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// 构建应用
var app = builder.Build();
// 配置请求管道
if (app.Environment.IsDevelopment())
{ // 在开发环境中启用 Swagger 中间件
app.UseSwagger();
app.UseSwaggerUI();
}
// 添加授权中间件,启用授权功能
app.UseAuthorization();
// 映射应用程序中的控制器路由
app.MapControllers();
// 运行应用
app.Run();
跨域配置
- 新建
Extensions目录,新建serviceExtensions类
namespace Zhaoxi.GameManagement.HttpApi.Extensions
{
public static class serviceExtensions
{
// this IServiceCollection 表明这是对 IServiceCollection 的扩展方法
// services代表ASP.NET Core的依赖注入容器
public static void ConfigureCors(this IServiceCollection services) {
// 配置CORS策略
services.AddCors(options =>
{
options.AddPolicy("AnyPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
});
}
}
}
......
builder.Services.AddSwaggerGen();
// 自定义跨域服务
builder.Services.ConfigureCors();
......
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
// 管道注册
app.UseCors("AnyPolicy");
app.UseAuthorization();
......
业务逻辑
- 新建项目类库
Zhaoxi.GameManagement.Entites(其实就是一个目录名称),把Class1.cs修改为Player.cs,内容如下
using System.Reflection.PortableExecutable;
namespace Zhaoxi.GameManagement.Entites
{
public class Player
{
public Guid Id { get; set; }
public string Account { get; set; }
public string AccountType { get; set; }
public DateTime DateCreated { get; set; }
// Character表示角色,此时还有定义,这里会有报错提示,这是正常的
public ICollection<Character> Character { get; set; }
// 构造器初始化时间属性
public Player() {
DateCreated = DateTime.Now;
}
}
}