C# Web API 教程

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());
            });
        }
    }
}

  • program.cs注册该类
......
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;
        }
    }
}

posted @ 2025-07-01 15:09  清安宁  阅读(22)  评论(0)    收藏  举报