【发布时间】:2019-12-24 11:28:56
【问题描述】:
我只是在学习 WebAPI 并且好奇我们是否可以在 get 方法中重用 Post 方法,或者它只是违反了编码标准。我们如何测试这种违规行为是否已经由某人完成?
// GET api/values/5
public string Get(int id)
{
var value= vc.Values.Where(v => v.Id == id).Select(v => v.Value1).SingleOrDefault();
if (value==null) Post("New Value",id);
return vc.Values.Where(v => v.Id == id).Select(v => v.Value1).SingleOrDefault();
}
// POST api/values
public void Post([FromBody]string value, int id = 0)
{
vc.Values.Add(new Value { Id=id,Value1 = value });
vc.SaveChanges();
}
【问题讨论】:
-
不,你不应该。
Get应该检索数据,如果丢失则不要创建它。 -
好的,谢谢。我们如何为此类错误编写测试用例或可以扫描代码/项目以查找此类错误的东西。
-
是的,您可以像调用方法一样调用您的 Web 服务,它可以工作,但这违反了一些规则,例如 SOLID。
-
@FurkanÖztürk 你知道任何可以帮助检测它的代码质量工具吗?
-
你可以看看 SonarQube @DeepakMishra
标签: c# asp.net-web-api asp.net-web-api2