【问题标题】:ASP.NET Core routing empty parametersASP.NET Core 路由空参数
【发布时间】:2019-09-29 15:08:21
【问题描述】:

我有一种方法的控制器。 路由涵盖下一个场景:

1. userId="1" ,userEmail=null https://localhost:44371/api/customers/1
1. userId="1" ,userEmail="1" https://localhost:44371/api/customers/1/1

userId=null,userEmail="1"时如何发送请求的主要问题。 使用%20 并请求https://localhost:44371/api/customers/%20/1 之类的东西? 什么是正确的方法?

[HttpGet("{userId}")]
[HttpGet("{userId}/{userEmail}")]
[ApiController]
public class CustomersController : ControllerBase
{
    public JsonResult GetCustomer(string userId, string userEmail)
    {
        return new JsonResult(string.Format("userId: {0}, email: {1} ", userId, userEmail));
    }
}

【问题讨论】:

    标签: c# json asp.net-core .net-core asp.net-core-mvc


    【解决方案1】:

    您以错误的方式进行路由,因此将代码更改为此,因为您需要在操作方法中进行路由

    [ApiController]
    [Route("api/[controller]")]
    public class CustomersController : ControllerBase
    {
        [HttpGet("{userId}/{userEmail}")]
        public JsonResult GetCustomer(string userId, string userEmail)
        {
            return new JsonResult(string.Format("userId: {0}, email: {1} ", userId, userEmail));
        }
    }
    

    所以你可以像这样请求api

    https://localhost:44371/api/customers/1
    

    另一个例子

    [Route("[controller]/[action]")]
    public class ProductsController : Controller
    {
        [HttpGet] // Matches '/Products/List'
        public IActionResult List() {
            // ...
        }
    
        [HttpGet("{id}")] // Matches '/Products/Edit/{id}'
        public IActionResult Edit(int id) {
            // ...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 2012-09-12
      • 2019-04-07
      • 2021-10-13
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多