visual-studio - Visual Studio 项目 REST api

标签 visual-studio rest asp.net-web-api projects-and-solutions

使用 Microsoft 的 asp.net web api 东西。

为 REST api 构建 Visual Studio 项目的最佳方式是什么?

我应该为每种类型的对象创建一个新项目并将它们放在一个解决方案中吗?
顾客
地址
银行

或者让它们都在同一个项目中,只是类不同?

这两种方法有什么好处吗?

这个 API 将在某个时候包含我拥有的每个数据源。

最佳答案

我认为您应该有一个 Web 项目,否则您将有多个 HTTP 端点。因此,我假设您的问题是将所有 Web API Controller (派生自 ApiController 的类,请参阅 MSDN)放在哪里。

通常我们在web项目中拥有所有的Web API Controller,这样它们就与其他应用层分离了。 Controller 非常简单,它们只是将调用转发到存储库或其他服务。

在一个项目中,我们还分离了主 Controller ,因为它们可以在不重新编译项目(某种插件)的情况下插入。

如果您使用某种 IoC + 依赖注入(inject)库(我强烈建议),那么 Controller 由容器创建,因此它们可以位于任何引用的程序集中,您应该只在容器内注册所有 Controller 。

这里有一个关于如何使用 CaSTLe Windsor 和 ASP.NET API 的教程:Dependency Injection in ASP.NET Web API with Castle Windsor by Mark Seemann .

这是 Ninject 的另一个教程:Adding Ninject to Web API .

另一个建议是使用Attribute Routing,因为我觉得它更强大也更容易使用。有关详细信息,请参阅 this article .基本上每个 Controller / Action 定义自己的路线,例如:

public class OrdersController : ApiController
{
    [Route("customers/{customerId}/orders")]
    [HttpGet]
    public IEnumerable<Order> FindOrdersByCustomer(int customerId) { ... }
}

最后请注意,因为 Controller 名称(类名称)在所有解决方案中应该是唯一的。

关于visual-studio - Visual Studio 项目 REST api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22921787/

相关文章:

visual-studio - 我可以查看 MSBuild 实际执行了哪些构建命令吗?

git - 在 Visual Studio 2010 beta 2 中使用 Git

java - 在 Google Cloud End Points 中一次插入多个相同类型的记录

asp.net-core - 如何在 Visual Studio 2019 16.8.3 Build 中禁用 ASP.NET Core API 3.1 项目的 SSL?

regex - 电子邮件的 ASP.NET MVC Web API 数据注释正则表达式

python - 使用自定义装饰器/属性记录 Python Bottle API

c# - 用于缺少 Microsoft.Net.Compilers 的项目的 Roslyn 编译器版本

c++ - 值如何存储在 char 中

javascript - REST : Return complex nested data vs. 多次调用

rest - 如何使用 Jenkins API 为 Jenkins 创建 secret 文本类型的凭证?