C# 在webapi中公开域逻辑
所以在REST中我有一个产品资源C# 在webapi中公开域逻辑,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,所以在REST中我有一个产品资源 http://api/product 问题是,如果我有一些域逻辑怎么办?在面向对象的世界中,我可能 public class product { int id; public product(){} public int Calc(int first, int second) { return first + second; } } 如何表示此业务逻辑?我想我可以 public int Ge
http://api/product
问题是,如果我有一些域逻辑怎么办?在面向对象的世界中,我可能
public class product
{
int id;
public product(){}
public int Calc(int first, int second)
{
return first + second;
}
}
如何表示此业务逻辑?我想我可以
public int GetCalc(int id, int first, int second)
{
localProduct = products[id];
return localProduct(first + second);
}
因此,服务的URL将变为
http://api/product/Calc?id=1&first=1&second=2
或者(或者)
这将返回正确的结果。。。。我只是想知道这是否是我应该如何表示业务逻辑的方式?或者我应该以不同的方式来做这件事,还是试图完全避免?我欢迎任何关于如何改进这个的想法…好吧,理论上REST不应该处理逻辑,而应该只处理状态(REST=代表性状态转移) 当然,我明白你的意思,如果我需要计算值,我该怎么办 我认为你应该尽量避免这样做 如果这是不可能的,我只会公开一个表示对象状态的ViewModel,并对外部世界隐藏带有逻辑的模型。这可以确保您执行显式转换,并且它还显式声明您发送的是对象的状态,而不是对象本身
但这基本上取决于形势,没有真正的硬性规定。我会说,现在就去做最有意义的事。如果您发现它变得笨拙,请将其重构为更好的解决方案。好吧,理论上REST不应该处理逻辑,而应该只处理状态(REST=代表性状态转移) 当然,我明白你的意思,如果我需要计算值,我该怎么办 我认为你应该尽量避免这样做 如果这是不可能的,我只会公开一个表示对象状态的ViewModel,并对外部世界隐藏带有逻辑的模型。这可以确保您执行显式转换,并且它还显式声明您发送的是对象的状态,而不是对象本身
但这基本上取决于形势,没有真正的硬性规定。我会说,现在就去做最有意义的事。如果您发现它变得笨拙,请将其重构为更好的解决方案。这可能在很大程度上取决于您构建的系统。花点时间想想这将如何随着时间的推移而发展,因为这是很难重构的。你前进的方向看起来不错 此API调用
http://api/product/Calc?id=1&first=1&second=2
我觉得不错。因此,您有一个产品
控制器,它有一个方法Calc
,并接受参数id
,第一个
和第二个
我不太确定如何处理这个API
http://api/product/1/Calc?first=1&second=2
在我看来,一个
产品
有许多id
,每个id
都可以调用一个方法Calc
,参数为第一个和第二个。也许在您的业务领域,这是有意义的,我就是看不出来。这可能在很大程度上取决于您构建的系统。花点时间想想这将如何随着时间的推移而发展,因为这是很难重构的。你前进的方向看起来不错
此API调用
http://api/product/Calc?id=1&first=1&second=2
我觉得不错。因此,您有一个产品
控制器,它有一个方法Calc
,并接受参数id
,第一个
和第二个
我不太确定如何处理这个API
http://api/product/1/Calc?first=1&second=2
在我看来,一个产品
有许多id
,每个id
都可以调用一个方法Calc
,参数为第一个和第二个。也许在你的商业领域,这是有意义的,我就是看不到。是的。。。。我真不知道它是否真的应该是_http://api/product?id=1/Calc?first=1&second=2yeah.... 我真不知道它是否真的应该是_http://api/product?id=1/Calc?first=1&second=2