在方法之间重用公共API操作是否可以接受?
假设我有一个方法(GET api / something),在那个方法中我调用internal(GET api / somethingElse)。
内部意思是我实例化类并调用方法。
答案 0 :(得分:3)
如@David says和Access one web api controller from another,Call WebApi controller from another controller等所述,您不应该在控制器中实例化控制器。
HTTP API(应该是)只是一个非常薄的层,用于将HTTP请求映射到业务逻辑,可能在此过程中执行一些身份验证和授权。
API控制器中的典型GET方法应如下所示:
public SomeModel Get(int id)
{
var model = _repository.Get(id);
return model;
}
所以,如果你这样做:
public SomeModel Get(int id)
{
var database = new Database();
var record = database.SomeModels.Get(id);
record.FooProperty = DoSomeLogic();
// and so on
return record;
}
在另一个方法GetSomethingElse
中,甚至在另一个控制器中,你想要访问这个逻辑,那么你应该考虑将这个方法中发生的所有内容抽象到一个单独的类中,在我之前引用的代码中_repository
变量。
然后,您可以重用控制器和操作方法之间的逻辑。