You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Swagger Petstore定义生成C#客户端并调用API的实现问询

刚好我之前也用过VS 2017的「添加REST API客户端」功能生成过Petstore的代理类,给你分享几个实用的调用示例,一步步来:

1. 先确认代理类的基础信息

生成的代码里会有一个核心客户端类(通常叫PetstoreClient或者SwaggerPetstoreClient),还有对应的命名空间——比如你导入时指定的命名空间,或者默认是项目名称加上类似SwaggerPetstore的后缀。记得在代码开头引用这个命名空间:

using YourProjectNamespace.SwaggerPetstore; // 替换成你实际的命名空间
2. 初始化客户端实例

先创建客户端对象,默认会使用Swagger定义里的基础地址;如果是本地部署的Petstore服务,记得手动修改BaseUrl:

// 初始化默认客户端
var petstoreClient = new PetstoreClient();

// 如果是本地测试的Petstore服务,替换成你的实际地址
// petstoreClient.BaseUrl = "http://localhost:8080/v2";
3. 常用API调用示例

下面是几个Petstore最常用的操作示例,都用异步版本(推荐用异步避免阻塞线程,同步版本就是去掉Async后缀):

获取指定ID的宠物

try
{
    // 传入宠物ID,获取宠物对象
    Pet targetPet = await petstoreClient.GetPetByIdAsync(1);
    if (targetPet != null)
    {
        Console.WriteLine($"宠物名称:{targetPet.Name},状态:{targetPet.Status}");
    }
}
catch (ApiException ex)
{
    // 捕获API调用异常,里面包含错误码、响应内容等信息
    Console.WriteLine($"获取宠物失败:{ex.Message},错误码:{ex.ErrorCode}");
}

添加新宠物

// 构造一个新宠物对象
var newPet = new Pet
{
    Id = 1001,
    Name = "我的小橘猫",
    Status = "available", // 可选状态:available、pending、sold
    Category = new Category { Id = 1, Name = "猫咪" },
    Tags = new List<Tag> { new Tag { Id = 1, Name = "粘人" } },
    PhotoUrls = new List<string> { "https://example.com/orange-cat.jpg" }
};

try
{
    await petstoreClient.AddPetAsync(newPet);
    Console.WriteLine("宠物添加成功!");
}
catch (ApiException ex)
{
    Console.WriteLine($"添加宠物失败:{ex.Message}");
}

更新宠物信息

// 构造更新后的宠物对象(只需要填要修改的字段也可以,不过建议带上ID)
var updatedPet = new Pet
{
    Id = 1001,
    Name = "我的大橘猫",
    Status = "sold"
};

try
{
    await petstoreClient.UpdatePetAsync(updatedPet);
    Console.WriteLine("宠物信息更新成功!");
}
catch (ApiException ex)
{
    Console.WriteLine($"更新宠物失败:{ex.Message}");
}

删除指定ID的宠物

try
{
    await petstoreClient.DeletePetAsync(1001);
    Console.WriteLine("宠物删除成功!");
}
catch (ApiException ex)
{
    Console.WriteLine($"删除宠物失败:{ex.Message}");
}
4. 几个关键注意事项
  • 所有API方法都有同步和异步两个版本,优先用异步版本(带Async后缀),适合桌面或Web项目的非阻塞场景。
  • 代理类会抛出ApiException来处理API调用错误,里面包含错误码、响应头、响应内容等细节,一定要记得捕获处理。
  • 如果需要自定义请求头(比如后续用到需要密钥的API),可以通过petstoreClient.Configuration.DefaultHeader.Add("HeaderName", "HeaderValue")来添加。

内容的提问来源于stack exchange,提问作者sandunes90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:34:53