You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
3.7 KiB

using System;
using System.Collections.Generic;
using System.Web;
namespace Apewer.Web
{
/// <summary>选项。</summary>
public static class ApiOptions
{
/// <summary>允许 Invoker 解析 favicon.ico 请求。</summary>
/// <remarks>默认值:不允许,响应空。</remarks>
public static bool AllowFavIcon { get; set; } = false;
/// <summary>允许 Invoker 解析 robots.txt 请求。</summary>
/// <remarks>默认值:不允许,拒绝搜索引擎收录根目录。</remarks>
public static bool AllowRobots { get; set; } = false;
/// <summary>允许 Invoker 枚举输出 Applications 或 Functions。</summary>
/// <remarks>默认值:不允许,不输出列表。</remarks>
public static bool AllowEnumerate { get; set; } = false;
/// <summary>允许 Invoker 输出 Exception 对象的属性。</summary>
/// <remarks>默认值:不允许输出。</remarks>
public static bool AllowException { get; set; } = false;
/// <summary>允许 Invoker 输出的 Json 对象缩进。</summary>
/// <remarks>默认值:不缩进。</remarks>
public static bool JsonIndent { get; set; } = false;
/// <summary>允许 Invoker 输出 Application 列表时包含模块名称。</summary>
/// <remarks>默认值:不包含。</remarks>
public static bool WithModuleName { get; set; } = false;
/// <summary>允许 Invoker 输出 Application 列表时包含类型名称。</summary>
/// <remarks>默认值:不包含。</remarks>
public static bool WithTypeName { get; set; } = false;
/// <summary>在响应中包含时间属性。</summary>
/// <remarks>默认值:不包含。</remarks>
public static bool WithClock { get; set; } = false;
/// <summary>在响应中包含执行 API 的持续时间。</summary>
/// <remarks>默认值:包含。</remarks>
public static bool WithDuration { get; set; } = true;
/// <summary>在响应中包含 Application 和 Function 属性。</summary>
/// <remarks>默认值:不包含。</remarks>
public static bool WithTarget { get; set; } = false;
/// <summary>在响应中包含 Access-Control 属性。</summary>
/// <remarks>默认值:包含。</remarks>
public static bool WithAccessControl { get; set; } = true;
/// <summary>设置 Access-Control-Max-Age 的值。</summary>
/// <remarks>默认值:60。</remarks>
public static int AccessControlMaxAge { get; set; } = 60;
/// <summary>移除 Response 中的 Server 属性。</summary>
/// <remarks>默认值:不移除。</remarks>
public static bool RemoveResponseServer { get; set; } = false;
/// <summary>允许同步 IO。</summary>
/// <remarks>
/// <para>默认值:允许。</para>
/// <para>允许:使用同步方法写入 Response.Body,可能会导致线程不足而崩溃。</para>
/// <para>不允许:必须用异步方法写入 Response.Body。</para>
/// </remarks>
internal static bool AllowSynchronousIO { get; set; } = true;
#region Static Web
private static Type _default = null;
/// <summary>获取默认控制器类型。</summary>
public static Type Default { get { return _default; } }
/// <summary>设置默认控制器类型。</summary>
public static void SetDefault<T>() where T : ApiController => _default = typeof(T);
/// <summary>取消默认控制器类型。</summary>
public static void CancelDefault() => _default = null;
#endregion
}
}