我正在尝试创建一个Web API项目和一个客户端Web项目,其中Web项目可以通过ajax访问API。目前我的项目如下:
我在这里看到了这个答案:Setting app a separate Web API project and ASP.NET app,它解释了如何将项目URL设置为 localhost:[port] / api 。
但是对于ASP.NET 5项目,属性只有3个选项卡(与ASP.NET 4项目中的几个选项卡相对):
我想知道的是:
任何帮助将不胜感激!
答案 0 :(得分:1)
第一点:
一般来说,在ASP.NET 5中,路由默认值非常好,并且开箱即用,没有太多配置方式。您可以在应用程序中使用配置和/或属性路由(详细概述here),尽管我的个人偏好是针对归因方法。如果您的Startup.cs文件中有以下行(您应该在新项目中使用):
app.UseMvc();
您应该能够以所需的方式将请求路由到您的api控制器(即" / api /..."),只需使用下面的[Route]属性(示例来自标准)生成ASP.NET 5 Web API应用程序)
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
以上示例将路由任何GET请求发送到&#34; / api / values&#34;。
虽然这种方法可用于处理对api的请求,但为了提供前端javascript应用程序/单页应用程序所需的文件,您需要启用静态文件服务。如果将以下内容添加到Startup.cs类中的Configure方法:
app.UseStaticFiles();
这将允许您的应用程序提供这些静态文件 - 默认情况下,这些文件是从“wwwroot”文件夹提供的,但如果需要,可以在project.json文件中进行更改。然后,应将前端应用程序所需的文件添加到此文件夹中。提供静态文件的教程可以是found here。
第二点:
根据我的经验,当您发布网站时,这不会成为问题 - 只要您的服务器设置正确,您在提出请求时就不需要包含端口 - 导航到[yourwebsitename] / api / ...就够了。
第三点:
在我看来,这完全取决于项目可能增长的程度,尽管偏好和意见因开发人员而异。一般来说,如果项目的范围仍然很小,那么将它们保存在一个项目中就完全可以了,因为减少了不必要的复杂性。但是,正如您所指出的那样,它也非常有用,可以保持项目之间的关注点分离。因此,除了您的方法的组织优势之外,两个项目的相应依赖关系也将/将保持独立。