c# - ASP.NET Core 路由空参数
问题描述
我有一种方法的控制器。路由涵盖下一个场景:
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));
}
}
解决方案
您以错误的方式进行路由,因此将代码更改为此,因为您需要在操作方法中进行路由
[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) {
// ...
}
}
推荐阅读
- sql - BigQuery SQL,CASE WHEN/IF 关于代码编辑的问题。简单的水平
- wso2 - 调用 Remedy 时出现 404
- php - RabbitMQ 在收到 ack 后发送信息
- kdb - 如何在 KDB 中创建 1 的列表?
- html - 如何在 Angular 中对离子元素的同一组件的不同形式中使用多个自动对焦属性?
- java - 重定向时未执行日志记录
- python - 如何访问 Turicreate StyleTransfer 中的参数?
- javascript - Next.js:在构建时跳过生成静态站点(相反:仅在运行时,因为 getStaticProps 在构建阶段没有数据)
- javascript - 如何使用 flex 并排创建 3 个 div,其中中间 div 相对于其他两个 div 可以(增长和缩小)?
- javascript - 如何使用 jQuery 将数组中的特定索引映射到 html 表