gpt4 book ai didi

c# - 多个 REST API 方法可以共享同一个 Controller 类吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:19 25 4
gpt4 key购买 nike

最好的做法是将每个不同的 Get 方法放在它自己的 Controller 类中,还是在同一个类中拥有多个(相关和不相关的)API 方法是否完全没问题,如果方法非常简单,不复杂。

例如这两个 API 方法在同一个 Controller 类中运行良好,但它们在自己的类中会更好吗?

如果是,为什么?

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);
}
}
}

最佳答案

一旦它们的路由不同并且不会导致当前或其他 Controller 中的路由冲突,就没有什么可以阻止您在 Controller 中执行多个操作。

以您提供的示例为例。您可以利用 Controller 的路由前缀来帮助组织类似的路由

[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);
}
}

关于c# - 多个 REST API 方法可以共享同一个 Controller 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51557186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com