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.
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();}