2015-09-05 82 views
2

我正在尝试创建一个Web API项目和一个客户端Web项目,其中Web项目可以通过ajax访问API。目前我的项目是这样的:在VS2015中设置项目URL ASP.NET 5 Web API应用程序

Project Hierarchy (2 Projects, API & Web)

我看到这里这样的回答:Setting app a separate Web API project and ASP.NET app,这说明该项目的URL如何被设置为本地主机:端口]/API

但是对于ASP.NET 5个项目,属性只能有3个选项卡(而不是在ASP.NET中发现的几个4个项目):

Properties (Application, Build, Debug)

什么我不知道是:

  • 我必须在其他地方设置此选项吗? (即project.json)
  • 这将如何工作的时候发布?理想我想[websiteURL]/API服务于我的API,而该链接明确提出本地主机:8080。
  • 这两个项目是一个好主意吗?我可以很容易地将API和web放在同一个项目中,但我喜欢将客户端和服务器端逻辑分开。

任何帮助,将不胜感激!

回答

1

第一点:

在ASP.NET 5一般来说,路由默认都是很不错的,应在配置的方式工作开箱没有太多。您可以在应用程序中使用配置和/或属性基于路由(尽管详细概述了here),但我个人的偏好适用于属性方法。只要你有你的Startup.cs文件以下行(你应该有一个新的项目):

app.UseMvc(); 

,你应该能够将请求路由到您的API控制器所需的方式(即“/ API/...“)简单地通过使用〔路线]属性作为下方(例如,从)

[Route("api/[controller]")] 
    public class ValuesController : Controller 
    { 
     [HttpGet] 
     public IEnumerable<string> Get() 
     { 
      return new string[] { "value1", "value2" }; 
     } 
    } 

产生ASP.NET 5的Web应用程序的API标准的上面的示例将路由任何GET请求作出采取”/API /值”。

虽然此方法可用于处理对您的api所做的请求,但为了提供您的前端JavaScript应用程序/单页应用程序所需的文件,您需要启用静态文件服务。如果您添加以下的配置方法,在您的Startup.cs类:

app.UseStaticFiles(); 

这将使您的应用程序服务的静态文件 - 默认情况下,这些都是从“wwwroot文件”文件夹服务,虽然这可以如果需要,可以在project.json文件中进行更改。然后应该将您的前端应用程序所需的文件添加到此文件夹中。有关提供静态文件的教程可以是found here

第二点:

在我的经验,这将不会是当您发布的网站的一个问题 - 只要你的服务器设置正确,你将不再需要包括制作请求时的端口 - 导航到[yourwebsitename]/api/...就足够了。

第三点:

在我看来,这完全取决于项目有多大可能会增长,虽然喜好和意见会有所不同,从开发到开发者。一般而言,如果项目的范围仍然很小,那么将两者都保存在一个项目中是完全可以的,因为不必要的复杂性会降低。然而,正如你所指出的那样,它也非常有用,以保持项目之间的关注点分离。因此,除了您的方法的组织优势之外,两个项目的相关依存关系也将保持分开。

相关问题