首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个REST方法共享同一个控制器类可以吗?

多个REST方法共享同一个控制器类可以吗?
EN

Stack Overflow用户
提问于 2018-07-27 11:40:26
回答 2查看 1.1K关注 0票数 1

将每个不同的Get方法放在自己的控制器类中是最佳实践,还是在同一个类中有多个(相关的和非相关的) API方法非常好,如果这些方法非常简单和简单的话。

例如,这两个API方法在同一个控制器类中工作得很好,但是它们在自己的类中会更好吗?

如果是的话,为什么?

代码语言:javascript
复制
public class TestController : ApiController
{
    [HttpGet]
    [Route("api/test/ping")]
    public IHttpActionResult Ping()
    {
        try
        {
            return Ok("HELLO");
        }
        catch (Exception ex)
        {
            return Content(HttpStatusCode.InternalServerError, ex.Message);
        }
    }

    [HttpGet]
    [Route("api/test/echo/{message}")]
    public IHttpActionResult Echo(string message)
    {
        try
        {
            return Ok(message);
        }
        catch (Exception ex)
        {
            return Content(HttpStatusCode.InternalServerError, ex.Message);
        }
    }
}
EN

Stack Overflow用户

回答已采纳

发布于 2018-07-27 11:46:09

一旦控制器的路由是不同的,并且不会在当前控制器或其他控制器中造成路由冲突,则没有什么可以阻止您在控制器中进行多个操作。

以你提供的例子为例。您可以利用控制器的路由前缀来帮助组织类似的路由。

代码语言:javascript
复制
[RoutePrefix("api/test")]    
public class TestController : ApiController {

    //GET api/test/ping
    [HttpGet] [Route("ping")]
    public IHttpActionResult Ping() {
        return Ok("HELLO");
    }

    //GET api/test/echo/hello%20world
    [HttpGet] [Route("echo/{message}")]
    public IHttpActionResult Echo(string message) {
        if(message == null)
            return BadRequest();
        return Ok(message);
    }
}
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51557186

复制
相关文章

相似问题

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