XIKEW.COM - 实用教程 - 路由方法的返回值 - 实用教程,Router,NETCORE,路由 - LinkCoreX内置了几类返回值方案,你可以根据开发需要选择

路由方法的返回值
LINKCORE NETCORE 框架 9/5/2024 9:55:25 PM 阅读:1

LinkCoreX内置了几类返回值方案,你可以根据开发需要选择 关键字:Router,NETCORE,路由

[[toc]]

返回类型 IActionResult

字符串 String

StringActionResult 内容以字符串类型输出到前端,常用于后台直接渲染HTML页面的项目

return new StringActionResult{ Data = "Hello LinkCodeX!" };

二进制 Bytes

BytesActionResult 用于要求输出图片内容时

// 默认JPEG
return new BytesActionResult { Data = 图片二进制数据 };
// PNG
return new BytesActionResult { Data = 图片二进制数据, ResultType = IActionResultType.PNG };

默认类型 Default

DefaultActionResult 是上面两种类型的父类,唯一的区别就是 ResultType

public enum IActionResultType
{
    // 字符串类型
    TEXT = 0,
    JSON = 1,
    XML = 2,

    // 二进制图片
    JPEG = 10,
    PNG = 11
}

DefaultActionResult 完整结构如下

public class DefaultActionResult : IActionResult
{
    virtual public string Code { get; set; }
    virtual public object Data { get; set; }
    virtual public string Message { get; set; }
    // 服务器状态码
    [JsonIgnore]
    virtual public int StatusCode { get; set; } = 200;
    // 支持 IActionResultType.JSON
    [JsonIgnore]
    virtual public IActionResultType ResultType { get; set; } = IActionResultType.JSON;
    [JsonIgnore]
    virtual public bool? CamelCase { get; set; }
    [JsonIgnore]
    virtual public string Redirect { get; set; }
    [JsonIgnore]
    virtual public string AllowOrigin { get; set; }
    [JsonIgnore]
    virtual public string AllowHeaders { get; set; } = "*";
    [JsonIgnore]
    public Dictionary<string, string> Headers { get; set; }
    [JsonIgnore]
    public JsonSerializerOptions JsonOptions { get; set; }
}

重定向 Redirect

了解了 DefaultActionResult 的结构后,应该可以猜到重定向的方法了吧 :wink:

return new DefaultActionResult { Redirect  = "http://www.baidu.com" };

跨域管理

关于跨域建议可以看下

return new DefaultActionResult { AllowHeaders = "*", AllowOrigin = "https://m4l.cn", Headers = null };

JSON (返回)

return new DefaultActionResult { Code = "0000", Data = "Hello LinkCodeX!" };

前端接收如下:

{
    "code": "0000",
    "data": "Hello LinkCodeX!",
    "message": null
}

::: tip 如果希望返回的数据键保持驼峰,可以加上 CamelCase = true :::

内置的 JSON 的封装 JSONDocument 继承了 System.Text.Json 所以通过 DefaultActionResult.JsonOptions 可以对输出 JSON 内容进行更多设置

return new DefaultActionResult { JsonOptions = System.Text.Json.JsonSerializerOptions.Default };

JSON (传参)

回想下上一章的路由传参中我们提到路由方法参数来接收对象数据。 如何用参数直接接收对象呢?只需要将传参地址中的 md 传为 JSON 值!

public IActionResult GetDetail(Model md)
{
    // Code Todo...
}