IRONSOFTWAREHOME

构建Postman Clone:API调用的类库设计

Class Library Design: Building a Postman Clone Course

Tim Corey

47m 58s

API 是现代应用程序开发的核心,拥有正确的工具来测试和与之交互至关重要。 Tim Corey的视频"类库设计:构建一个Postman克隆"分步带领我们构建一个基于桌面的Postman克隆。

在这篇文章中,我们将通过深入学习Tim Corey视频中展示的详细方法来探索如何构建一个Postman克隆。 Tim 带领我们一步步创建驱动我们应用程序中API调用的类库。 最后,我们将拥有一个可工作的MVP(最小可行产品)版本的Postman克隆。

这个过程对初学者友好,但同时也展示了关键的编程原则,这些原则对于希望创建自己的Postman或类似应用程序的开发者来说很有价值。 让我们深入了解这个过程。

介绍和设置

Tim首先解释了这节课的目标:创建业务逻辑和数据访问层,以使应用程序中的API调用生效。 他强调这是一个MVP——一个可以扩展的功能版本。

在深入代码之前,Tim指出课程设计为友好的投资组合项目,尽管他警告不要直接复制这个项目。 相反,他鼓励开发者使用它作为灵感来创建独特的项目,以展示C#、API交互和UI设计技能。

创建API访问类

Tim带领我们通过打开类库并从头开始。 他删除了默认的Class1并创建了一个名为APIAccess的新类。 这将处理所有的API交互。

他解释了他的设计方法:从公开的void方法开始,添加像字符串url这样的参数,然后逐步将其完善为可以处理实际API请求的异步任务。

public class APIAccess
{
    private readonly HttpClient client = new();
    
    public async Task<string> CallApiAsync(string url)
    {
        var response = await client.GetAsync(url);
        if (response.IsSuccessStatusCode)
        {
            return await response.Content.ReadAsStringAsync();
        }
        return $"error: {response.StatusCode}";
    }
}
Text

Tim强调创建一个单一的HTTP客户端实例来避免每次调用时重新初始化,这提高了性能。

处理API响应

一旦HTTP客户端到位,Tim展示了如何从API调用中检索响应。 他指出返回Task<string>而非async void的重要性,除非在事件处理程序中。

为做演示,Tim使用JSON Placeholder的一个示例API,它提供像帖子、评论和待办事项这样的假数据。 他将API URL粘贴到UI表单HTML中,并使用results.Text字段显示响应HTML或JSON。

results.Text = await api.CallApiAsync(apiText.Text);
Text

Tim指出,原始的JSON输出是计算机可读的,但对用户不友好,这引出了下一步:格式化JSON。

格式化JSON输出

Tim展示了如何使用JsonSerializer使响应JSON更具可读性:

var jsonElement = JsonSerializer.Deserialize<JsonElement>(responseJson);
var prettyJson = JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });
Text

这允许开发者在UI中显示美观的JSON,这在JSON文本编辑器或测试端点时更易于阅读。 Tim还添加了一个选项,可以在原始格式化输出之间切换,根据数据是否要在UI中显示或以编程方式处理而提供灵活性。

为未来的增强计划

尽管MVP仅支持GET请求,Tim展示了如何为其他HTTP动作如POST、PATCH、PUT和DELETE制定计划。 他创建了一个enum,称为HTTPAction,默认值为GET,为代码扩展做好准备,无需重写现有的方法。

public enum HTTPAction
{
GET
}
Text

这种前瞻性的设计对于希望构建可维护和可扩展的Postman克隆的开发者来说是个很好的实践。

URL验证

Tim介绍了一种URL验证方法,以确保用户仅提供有效的HTTPS端点:

public bool IsValidURL(string url)
{
    if (string.IsNullOrWhiteSpace(url)) return false;
    return Uri.TryCreate(url, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps;
}
Text

他解释了绝不信任用户输入和在必要时多次验证它的重要性。 这可以确保应用程序不因无效URL而破坏,并防止错误消息破坏工作流程。

将API访问与UI集成

验证到位后,Tim展示了如何将API访问与仪表板UI集成:

  1. 实例化APIAccess类。

  2. 验证URL。

  3. 在结果文本编辑器中显示响应JSON。

  4. 显示无效或失败请求的有意义的错误消息。

if (!api.IsValidURL(apiText.Text))
{
    systemStatus.Text = "无效URL";
results.Text = string.Empty;
return;
}
results.Text = await api.CallApiAsync(apiText.Text);
Text

Tim强调干净UI设计的重要性,每次请求都从一个空的结果区域开始并根据成功或失败更新系统状态。

使用接口进行依赖注入和单元测试

Tim介绍了IAPIAccess,这是APIAccess的一个接口。 这是单元测试和为依赖注入做好代码准备的最佳实践:

public interface IAPIAccess
{
    Task<string> CallApiAsync(string url);
bool IsValidURL(string url);
}
Text

通过针对接口而不是具体类编码,开发者可以在测试中更换实现,或在不改变UI或其他依赖代码的情况下升级API逻辑。 Tim强调虽然对于MVP来说这有点多余,但对于未来的应用增强来说是有价值的。

测试和运行应用程序

所有组件到位后,Tim在Windows上运行应用程序,粘贴JSON Placeholder URL,并成功显示格式化的JSON响应。 他展示了如何正确拒绝无效URL,确保应用程序即使在用户输入错误时也能健壮运行。

这形成了一个功能性的Postman克隆,能够进行GET请求、验证输入,并以用户友好的格式显示响应。

下一步:投资组合和GitHub集成

Tim结束课时时强调将此项目转变为投资组合就绪项目的重要性。 他建议:

  • 为项目创建一个GitHub库。

  • 添加一个清晰的README,解释应用程序。

  • 包含一个可下载的可执行文件供他人测试。

  • 在截图或GIF中突出UI和功能。

  • 记录过程、设置和代码结构。

他警告不要仅仅复制他的代码并将其上传为自己的。 相反,开发者应该利用这些课程创建自己的Postman克隆或反映个人风格和技能的类似应用程序。

通过遵循这种方法,开发者不仅可以展示编码熟练度,还可以展示探索、更新和维护软件项目的能力,这对于潜在雇主来说是无价的。

结论

Tim Corey的视频提供了从零开始构建Postman克隆的综合指南。 从设置类库到处理API调用、格式化JSON响应、验证输入以及通过接口和依赖注入为未来增强准备项目,这节课涵盖了完整的应用程序开发过程。

通过这种方法,开发者可以使用纯C#创建一个MVP Postman克隆,集成显示响应HTML或JSON的UI元素,并准备一个GitHub项目以在投资组合中展示。 这种逐步的方法不仅教会了代码,还强调了规划、过程和设计思维,这些都是专业软件开发人员的关键技能。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户