.net 如何在C#中使用多个REST API

iih3973s  于 2022-12-01  发布在  .NET
关注(0)|答案(1)|浏览(233)

最初,我使用了一个C#的REST API请求,并对JSON响应进行了去分类。我想使用多个API(2个或3个)。我如何修改代码?

static void Main(string[] args)
{
    api1();
}

public static void api1()
{
    var client = new RestClient("https://dummy.restapiexample.com/api/");
    var request = new RestRequest("Data");
    var response = client.Execute(request);

    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        string rawResponse = response.Content;
        var root = JsonConvert.DeserializeObject<Rootobject>(rawResponse)
    }
}

我尝试为每个API请求创建函数,但我不确定返回类型是什么,以及如何调用所有函数。

public async Task<Var> api2()
{
    var client = new RestClient("https://dummy.restapiexample2.com/api2/");
    var request = new RestRequest("Data");
    var response = client.Execute(request);

    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        string rawResponse = response.Content;
        var root = JsonConvert.DeserializeObject<Rootobject>(rawResponse)
        return root;
    }
    else
        return null;
}

static void Main(string[] args)
{
    api1();
    api2();
}
bvjveswy

bvjveswy1#

您不能像在上面的中所做的那样返回var,您需要返回期望从该方法获得的内容,例如Rootobject

public async Task Main(string[] args)
{
    var result = await Api2();
    var myProVal = result.MyProperty;
}

public static async Task <Rootobject> Api2()
{
    var client = new RestClient("https://dummy.restapiexample2.com/api2/");
    var request = new RestRequest("Data");
    var response = await client.ExecuteAsync(request);
    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        string rawResponse = response.Content;
        var root = JsonConvert.DeserializeObject<Rootobject>(rawResponse);
        return root;
    }
    else
        return null;
    }
}

这里你已经使用了async。async关键字将一个方法转换为async方法,它允许你在它的主体中使用await关键字。当应用await关键字时,它会暂停调用方法并将控制权交还给它的调用者,直到等待的任务完成。await只能在async方法内部使用。如果你没有这样的要求,就不要使用async。只需将方法设置为synchronous即可。
阅读更多信息:https://learn.microsoft.com/en-us/dotnet/csharp/async
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-7.0

更新日期:

在上面的代码片段中,我的Rootobject类如下所示,

public class Rootobject
{
    public int MyProperty { get; set; }
    public string Name { get; set; }
    public string age { get; set; }
    public string addr { get; set; }
}

在Main方法中,MyProperty是该类中的一个示例属性。在您的情况下,它应该是另一个属性,这取决于您。我认为在进入这一级别之前,如果您能够学习基础知识会更好。祝您好运

相关问题