在VS2015 ASP.NET 5 Web API应用程序中设置项目URL

时间:2015-09-05 12:36:49

标签: asp.net asp.net-mvc api asp.net-web-api asp.net-core

我正在尝试创建一个Web API项目和一个客户端Web项目,其中Web项目可以通过ajax访问API。目前我的项目如下:

Project Hierarchy (2 Projects, API & Web)

我在这里看到了这个答案:Setting app a separate Web API project and ASP.NET app,它解释了如何将项目URL设置为 localhost:[port] / api

但是对于ASP.NET 5项目,属性只有3个选项卡(与ASP.NET 4项目中的几个选项卡相对):

Properties (Application, Build, Debug)

我想知道的是:

  • 我是否必须在其他地方设置此选项? (即project.json)
  • 我发布时如何运作?理想情况下,我希望 [websiteURL] / api 提供我的API,而该链接显式地放置localhost:8080。
  • 将这两个项目作为一个好主意吗?我可以轻松地将API和Web放在同一个项目中,但我喜欢将客户端和服务器端逻辑分开。

任何帮助将不胜感激!

1 个答案:

答案 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 / ...就够了。

第三点:

在我看来,这完全取决于项目可能增长的程度,尽管偏好和意见因开发人员而异。一般来说,如果项目的范围仍然很小,那么将它们保存在一个项目中就完全可以了,因为减少了不必要的复杂性。但是,正如您所指出的那样,它也非常有用,可以保持项目之间的关注点分离。因此,除了您的方法的组织优势之外,两个项目的相应依赖关系也将/将保持独立。