我是WebApi的新手,我一直在阅读有关它的信息,但我不知道如何启动我的应用程序。
我已经有一个带有.Net 3.5的许多WFC服务的项目。所以,我将我的项目更新为4.5.1。然后我用Visual Studio 2012向导创建了一个控制器。然后,在创建控制器时,我将类视为带有get,post,put,delete方法的模板。所以我放置了post方法,最后我想用HttpClient测试服务。
我尝试从以下论坛申请绿色解决方案: How to post a xml value to web api?
我将收到一个带有Contract模型结构的XML字符串。
我将项目运行到Visual Studio Development Server中。
但我在测试我的服务时遇到了麻烦。
我看到很多网页上有人做这样的事情 http://localhost:port/api/contract。但我还不知道它是如何运作的。那么我该如何测试我的服务呢?我测试服务的路径或网址是什么?
答案 0 :(得分:5)
WebApi与MVC一样,都基于路由。默认路由是/api/{controller}/{id}
(当然可以更改)。这通常可以在新项目的~/App_Start/WebApiConfig.cs
文件中找到,但是如果您正在迁移,那么您最不可能拥有它。因此,要进行连线,您可以修改Application_Start
以包含:
GlobalConfiguration.Configure(WebApiConfig.Register);
然后,定义该类:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
如果您创建了TestController
控制器,并希望向本地运行的实例发出POST
请求,则您可以访问http://localhost:12345/api/Test/
(使用相应的动词)。 12345
将是Visual Studio用于托管服务的本地端口(可以通过查看项目的属性找到,然后导航到" Web"选项卡)。 / p>
话虽如此,测试可能最好在项目上执行(不进行外部调用)。关于这个主题有几篇帖子,但通常归结为以下内容:
[TestMethod]
public void Should_Return_Single_Product()
{
// Arrange
var repo = new FakeRepository<Widget>();
var controller = new WidgetController(repo);
var expected = repo.Find(1);
// Act
var actual = controller.GetWidget(1) as OkNegotiatedContentResult<Widget>;
// Assert
Assert.IsNotNull(actual);
Assert.AreEqual(expected.Id, actual.Content.Id);
}