85 lines
2.5 KiB
C#
85 lines
2.5 KiB
C#
using System.Collections.Generic;
|
||
|
||
namespace FileShare_Services.Core
|
||
{
|
||
/// <summary>
|
||
/// 抽象的请求上下文,屏蔽不同宿主(ASP.NET Core / Desktop WebView)的差异。
|
||
/// </summary>
|
||
public class ServiceEndpointContext
|
||
{
|
||
/// <summary>
|
||
/// 请求路径,例如 "api/wData"
|
||
/// </summary>
|
||
public string Path { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// HTTP 方法(GET, POST, PUT, DELETE 等)
|
||
/// </summary>
|
||
public string Method { get; init; } = "GET";
|
||
|
||
/// <summary>
|
||
/// 请求头
|
||
/// </summary>
|
||
public Dictionary<string, string> Headers { get; init; } = new(StringComparer.OrdinalIgnoreCase);
|
||
|
||
/// <summary>
|
||
/// 请求体(原始字符串)
|
||
/// </summary>
|
||
public string? Body { get; set; }
|
||
|
||
/// <summary>
|
||
/// 查询参数
|
||
/// </summary>
|
||
public Dictionary<string, string> Query { get; init; } = new(StringComparer.OrdinalIgnoreCase);
|
||
|
||
/// <summary>
|
||
/// 路由路径参数。
|
||
/// </summary>
|
||
public Dictionary<string, string> RouteValues { get; init; } = new(StringComparer.OrdinalIgnoreCase);
|
||
|
||
/// <summary>
|
||
/// 响应状态码
|
||
/// </summary>
|
||
public int StatusCode { get; set; } = 200;
|
||
|
||
/// <summary>
|
||
/// 响应状态描述
|
||
/// </summary>
|
||
public string StatusMessage { get; set; } = "OK";
|
||
|
||
/// <summary>
|
||
/// 响应头
|
||
/// </summary>
|
||
public Dictionary<string, string> ResponseHeaders { get; set; } = new(StringComparer.OrdinalIgnoreCase)
|
||
{
|
||
["Content-Type"] = "application/json; charset=utf-8"
|
||
};
|
||
|
||
/// <summary>
|
||
/// 响应体
|
||
/// </summary>
|
||
public object? ResponseBody { get; set; }
|
||
|
||
/// <summary>
|
||
/// 存储在请求生命周期中的任意数据(由中间件/过滤器使用)
|
||
/// </summary>
|
||
public Dictionary<string, object?> Items { get; init; } = new();
|
||
|
||
/// <summary>
|
||
/// 获取请求头值
|
||
/// </summary>
|
||
public string? GetHeader(string key)
|
||
{
|
||
return Headers.TryGetValue(key, out var value) ? value : null;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设置响应头
|
||
/// </summary>
|
||
public void SetResponseHeader(string key, string value)
|
||
{
|
||
ResponseHeaders[key] = value;
|
||
}
|
||
}
|
||
}
|