繁体   English   中英

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

[英]Setting project url in VS2015 ASP.NET 5 Web API application

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

项目层次结构(2 个项目,API 和 Web)

我在这里看到了这个答案: 将应用程序设置为单独的 Web API 项目和 ASP.NET 应用程序,它解释了如何将项目 url 设置为localhost:[port]/api

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

属性(应用程序、构建、调试)

我想知道的是:

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

任何帮助,将不胜感激!

第一点:

一般来说,在 ASP.NET 5 中,路由默认值非常好,应该开箱即用,无需太多配置。 您可以在您的应用程序中使用配置和/或基于属性的路由( 此处详细概述了两者),尽管我个人更喜欢属性方法。 假设您的 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 请求路由到“/api/values”。

虽然此方法可用于处理对您的 api 发出的请求,但为了交付前端 javascript 应用程序/单页应用程序所需的文件,您需要启用静态文件服务。 如果将以下内容添加到 Startup.cs 类中的 Configure 方法:

app.UseStaticFiles();

这将允许您的应用程序提供这些静态文件 - 默认情况下,这些文件是从“wwwroot”文件夹提供的,尽管如果需要,可以在 project.json 文件中更改。 然后应将前端应用程序所需的文件添加到此文件夹中。 可以在此处找到有关提供静态文件的教程。

第二点:

根据我的经验,当您发布网站时,这不会成为问题 - 只要您的服务器设置正确,您在发出请求时就不需要包含端口 - 导航到 [yourwebsitename]/api/... 就足够了。

第三点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM