在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服务一样。
答案 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抽象类的具体实现。