首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调用通用的WebApi控制器?

如何调用通用的WebApi控制器?
EN

Stack Overflow用户
提问于 2018-01-11 15:05:27
回答 2查看 1.6K关注 0票数 0

我正在尝试实现一个通用的API控制器,以用于所有模型。

代码语言:javascript
运行
复制
public class DefaultController<T> : ApiController
{
    // GET: api/Default
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET: api/Default/5
    public string Get(int id)
    {
        return "value";
    }
}

当我调用localhost时:xxxxxx/api/Default。它抛出错误

代码语言:javascript
运行
复制
No type was found that matches the controller named 'Default'.

有没有人可以指导我正确的实现方法。

另外,如何在调用API时指定类型?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-11 15:19:10

如果这是您的Generic API Controller (Base Controller)

代码语言:javascript
运行
复制
[Route("api/[controller]")]
public class DefaultController<T> : ApiController
{
    // GET: api/{ControllerName}
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "first", "second" };
    }

    // GET: api/{ControllerName}/5
    [HttpGet("{id}")]
    public string Get(int id)
    {
        return "value";
    }
}

您可以使用Posts的基本控制器

代码语言:javascript
运行
复制
public class PostsController : DefaultController<Post> {}

或用于其他应用程序,如Comments

代码语言:javascript
运行
复制
public class CommentsController : DefaultController<Comment> {}

您可以将控制器操作称为localhost:xxxx/api/postslocalhost:xxxx/api/posts/5localhost:xxxx/api/commentslocalhost:xxxx/api/comments/12

票数 2
EN

Stack Overflow用户

发布于 2018-01-11 15:17:36

而是尝试从泛型基本控制器继承。

代码语言:javascript
运行
复制
public class MyBaseController<T> : ApiController
{
    // GET: api/Default
    public IEnumerable<T> Get()
    {
        return callGenericMethod<T>();
    }
}  

现在可以创建任意数量的控制器:

代码语言:javascript
运行
复制
public class DefaultController : MyBaseController<MySpecificType>
{
   //add extra specific methods here or depend on the inherited ones only.
}  

调用控制器将与调用非泛型控制器相同:

代码语言:javascript
运行
复制
yourApiPath/Default/Get
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48201485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档