5.6定义返回值类型

创建于 2026 年 8 月 17 日约 1 分钟读完

HTTP 声明式请求接口方法中,除了支持常见的 HTTP 响应类型如 stringbyte[]StreamHttpRequestMessageHttpResponseMessagevoidIAsyncEnumerable<T>IActionResult<T> 以及它们的异步版本(Task/Task<T>/ValueTask/ValueTask<T>)外,还支持自定义类型和框架内置的 HttpRemoteResult<T>HttpRequestBuilderVoidContent 类型及其异步版本。

cs
public interface IHttpService : IHttpDeclarative{    // 字符串类型    [Get("https://furion.net/")]    Task<string> GetStringAsync();    [Get("https://furion.net/")]    string GetString();    // 字节数组类型    [Get("https://furion.net/")]    Task<byte[]> GetBytesAsync();    [Get("https://furion.net/")]    byte[] GetBytes();    // Stream 类型    [Get("https://furion.net/")]    Task<Stream> GetStreamAsync();    [Get("https://furion.net/")]    Stream GetStream();    // HttpResponseMessage 类型    [Get("https://furion.net/")]    Task<HttpResponseMessage> GetHttpResponseMessageAsync();    [Get("https://furion.net/")]    HttpResponseMessage GetHttpResponseMessage();    // 无返回值    [Get("https://furion.net/")]    Task GetVoidAsync();    [Get("https://furion.net/")]    void GetVoid();    [Get("https://furion.net/")]    Task<VoidContent> GetVoidContentAsync();    [Get("https://furion.net/")]    VoidContent GetVoidContent();    // 框架内置 HttpRemoteResult<T> 类型    [Get("https://furion.net/")]    Task<HttpRemoteResult<string>> GetHttpRemoteResultAsync();    [Get("https://furion.net/")]    HttpRemoteResult<string> GetHttpRemoteResult();    // IActionResult<T> 类型    [Get("https://furion.net/")]    Task<IActionResult> GetYourModelAsync();    [Get("https://furion.net/")]    IActionResult GetYourModel();    // IAsyncEnumerable<T> 类型    [Get("https://furion.net/")]    IAsyncEnumerable<string> GetAsyncEnumerable();    // 自定义类型    [Get("https://furion.net/")]    Task<YourModel> GetYourModelAsync();    [Get("https://furion.net/")]    YourModel GetYourModel();    // ValueTask/ValueTask<T> 类型    [Post("https://furion.net/user/add")]    ValueTask PostDataAsync(object data);    [Get("https://furion.net/")]    ValueTask<string> GetValueTaskAsync();    // HttpRequestBuilder 类型,不发送请求(预检请求)    [Get("https://furion.net/")]    Task<HttpRequestBuilder> GetRequestBuilderAsync();    // HttpRequestMessage 类型,不发送请求(预检请求)    [Get("https://furion.net/")]    Task<HttpRequestMessage> GetRequestMessageAsync();}