5.6定义返回值类型
创建于 2026 年 8 月 17 日约 1 分钟读完
在 HTTP 声明式请求接口方法中,除了支持常见的 HTTP 响应类型如 string、byte[]、Stream、HttpRequestMessage、HttpResponseMessage、void、IAsyncEnumerable<T> 和 IActionResult<T> 以及它们的异步版本(Task/Task<T>/ValueTask/ValueTask<T>)外,还支持自定义类型和框架内置的 HttpRemoteResult<T>、HttpRequestBuilder 和 VoidContent 类型及其异步版本。
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();}