2016-03-06 100 views
0

我是Web API的新手,我已经阅读了一些文档,但是对架构有些误解。即我需要为不同的实体创建许多get方法。但是我可以有且只有一个不带参数的GET方法。所以,我必须再创建一个API控制器,即使这个控制器根本只有一个方法?这个限制有什么意义?Web API方法

+0

在路线中包含方法名称,然后使用多种方法。 – SLaks

+0

@SLaks,谢谢你的回应。但是这个限制的背景是什么? –

回答

2

从网址/路线的角度考虑。如果你想访问一个Foo实体,你可以去/ api/foo,如果你想访问一个Bar实体,你可以去/ api/bar。

话虽如此,那就是约定,如果你愿意,你可以打破它。你肯定可以在一个控制器中有多个GET方法。行动只需要有不同的路线。你可以使用属性路由来设置它,例如

public class FooBarController : ApiController 
{ 
    [Route("foo")] 
    public Foo Get() {...} 

    [Route("bar")] 
    public Bar GetBar() {...} 
} 

然而,你通常会想坚持到不同的控制器,因为它使你的代码更易于维护不同的资源 - 它允许模型和控制器之间有明显的相关。拥有许多小型控制器没有任何问题。

+0

是的,但通常需要2种获得2种Foo集合的方法,只是不同的条件。有一种方法会更好,但参数不同? –

+0

您可以在同一个控制器中为不同的条件创建多个GET方法。他们只需要在Get()方法中接收这些“条件”作为参数。例如。获取(字符串ID)。 – charisk