通过HttpClient使用外部REST Web服务的存储库模式示例?

我已经搜索了很多,但没有找到任何使用存储库模式在ASP.NET MVC应用程序中使用外部REST Web服务的良好示例,具有松散耦合和有意义的关注点分离。 我在网上找到的几乎所有存储库模式的例子都是编写SQL数据或使用ORM。 我只想看一些使用HttpClient检索数据但包装在存储库中的示例。

有没有提到好的例子? 或者有人可以写一个简单的例子吗?

一个简单的例子:

// You need interface to keep your repository usage abstracted // from concrete implementation as this is the whole point of // repository pattern. public interface IUserRepository { Task GetUserAsync(int userId); } public class UserRepository : IUserRepository { private static string baseUrl = "https://example.com/api/" public async Task GetUserAsync(int userId) { var userJson = await GetStringAsync(baseUrl + "users/" + userId); // Here I use Newtonsoft.Json to deserialize JSON string to User object var user = JsonConvert.DeserializeObject(userJson); return user; } private static async Task GetStringAsync(string url) { using (var httpClient = new HttpClient()) { return await httpClient.GetStringAsync(url); } } } 

这是在哪里/如何获得Newtonsoft.Json包。


另一个选择是重用HttpClient对象并使您的存储库IDisposable因为您需要在使用它时处置HttpClient 。 在我的第一个例子中,它发生在using语句结束时using HttpClient之后。