5.6Defining Return Value Types

Created on Aug 17, 2026~3 min read

In HTTP declarative request interface methods, in addition to supporting common HTTP response types such as string, byte[], Stream, HttpRequestMessage, HttpResponseMessage, void, IAsyncEnumerable<T>, and IActionResult<T> as well as their asynchronous versions (Task/Task<T>/ValueTask/ValueTask<T>), custom types and the framework built-in HttpRemoteResult<T>, HttpRequestBuilder, and VoidContent types and their asynchronous versions are also supported.

cs
public interface IHttpService : IHttpDeclarative{    // String type    [Get("https://furion.net/")]    Task<string> GetStringAsync();    [Get("https://furion.net/")]    string GetString();    // Byte array type    [Get("https://furion.net/")]    Task<byte[]> GetBytesAsync();    [Get("https://furion.net/")]    byte[] GetBytes();    // Stream type    [Get("https://furion.net/")]    Task<Stream> GetStreamAsync();    [Get("https://furion.net/")]    Stream GetStream();    // HttpResponseMessage type    [Get("https://furion.net/")]    Task<HttpResponseMessage> GetHttpResponseMessageAsync();    [Get("https://furion.net/")]    HttpResponseMessage GetHttpResponseMessage();    // No return value    [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();    // Framework built-in HttpRemoteResult<T> type    [Get("https://furion.net/")]    Task<HttpRemoteResult<string>> GetHttpRemoteResultAsync();    [Get("https://furion.net/")]    HttpRemoteResult<string> GetHttpRemoteResult();    // IActionResult<T> type    [Get("https://furion.net/")]    Task<IActionResult> GetYourModelAsync();    [Get("https://furion.net/")]    IActionResult GetYourModel();    // IAsyncEnumerable<T> type    [Get("https://furion.net/")]    IAsyncEnumerable<string> GetAsyncEnumerable();    // Custom type    [Get("https://furion.net/")]    Task<YourModel> GetYourModelAsync();    [Get("https://furion.net/")]    YourModel GetYourModel();    // ValueTask/ValueTask<T> types    [Post("https://furion.net/user/add")]    ValueTask PostDataAsync(object data);    [Get("https://furion.net/")]    ValueTask<string> GetValueTaskAsync();    // HttpRequestBuilder type, does not send a request (preflight request)    [Get("https://furion.net/")]    Task<HttpRequestBuilder> GetRequestBuilderAsync();    // HttpRequestMessage type, does not send a request (preflight request)    [Get("https://furion.net/")]    Task<HttpRequestMessage> GetRequestMessageAsync();}