C# 如何禁止Web API中的Get方法使用post方法?

C# 如何禁止Web API中的Get方法使用post方法?,c#,asp.net-web-api,asp.net-web-api2,C#,Asp.net Web Api,Asp.net Web Api2,我正在学习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)

我正在学习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();
    }

这是两个问题,不是一个

重复使用这样的代码会导致灾难。 例如,通过将代码移动到库中,可以使端点非常纤细。然后,您可以简单地从端点调用这些新方法,这样就可以处理代码重用部分


就你如何发现这些问题而言,我不希望有一个工具能帮你做到这一点。你需要一个成熟的SDLC,你需要对你已经拥有的进行代码审查和分析。

不,你不应该。Get应该检索数据,而不是在数据丢失时创建数据。好的,谢谢。我们如何为这种类型的错误编写测试用例,或者为这种类型的错误扫描代码/项目。是的,你可以像方法一样调用你的web服务,它可以工作,但这违反了一些规则,比如SOLID。@FurkanÖztürk你知道有什么代码质量工具可以帮助检测它吗?你可以看看SonarQube@DeepakMishra+1,这是一个很好的知识,但是像灾难配方这样的事情可以避免,因为这不是一个可用于生产的代码,这样做的目的只是为了让系统意识到,如果某件事出了问题,那么它就错了。我一直在寻找能够在WebAPI中检测和验证这些东西的东西,这可能是一个单元测试。