如何正确调用Web API

时间:2017-01-12 12:59:03

标签: c# .net asp.net-web-api

在ASP .NET网站上,他们有an example如何从.NET客户端调用Web API。

他们使用此方法进行调用以创建新产品:

static async Task<Uri> CreateProductAsync(Product product)
{
    HttpResponseMessage response = await client.PostAsJsonAsync("api/products", product);
    response.EnsureSuccessStatusCode();

    // Return the URI of the created resource.
    return response.Headers.Location;
}

这就像在任何语言或框架中对任何API进行任何调用一样,但我在这一行中看到了很多问题:

HttpResponseMessage response = await client.PostAsJsonAsync("api/products", product);

如果&#34;路径&#34;参数是一个字符串,没有办法在编译时检测可能的错误。此外,如果API发生变化并且我们有很多调用,则无法快速重建调用。

是否有更好的方法来构建呼叫以避免此类问题?我的意思是,就像我们使用Web服务一样。

3 个答案:

答案 0 :(得分:2)

就像Nkosi所说,这就是它的设计方式。但是,您可以使用API​​ URI创建一个类,并使用它们而不是文字

NVARCHAR

这样,如果您的webapi发生变化,您可以轻松更改路径。

答案 1 :(得分:0)

如果服务器更改了参数的URL或类型和/或结构,即使Web Service和WCF服务也不保证构建失败。只有在您拨打该服务并且该服务中断时,您才会了解这些更改。

如果调用Web API,在调用API之前,您无法确定URL或参数计是否不正确。

同时,Web API不会经常更改。如果它们不可靠,没有人会使用它们。因此,如果您使用的是API,您可以确保它们不会在一夜之间更改其URL或停止支持某些输入参数,从而使其像您这样的消费者应用程序中断。他们肯定不想被他们的客户起诉。

任何API都会逐渐改变并提前通知客户,以便他们有时间更改其实施以支持新版API。 因此,您可以依赖于您正在使用的服务,并在配置文件中放置与其相关的值(例如URL)就足够了。或者您可以选择将API Urls放入数据库中,以便在更改时只需更新数据库中的条目,更改将立即生效。

答案 2 :(得分:-1)

只需延伸Adam的解决方案,您就可以使用

获取路线列表
System.Web.Routing.RouteTable.Routes.ToList();

然后获取路径取决于RouteBase抽象类的具体实现。