【发布时间】:2019-09-21 22:49:20
【问题描述】:
使用 ASP.NET Core 2.2 我有以下 ApiController 操作:
[ApiController]
public class PostController : Controller
{
[HttpGet("posts/{postId:int:min(1)}")]
public async Task<IActionResult> GetByPostId([FromQuery]GetByPostIdRequest request)
{
}
}
其中GetByPostIdRequest 如下:
public class GetByPostIdRequest
{
[FromRoute]
public Int32 PostId { get; set; }
public String LanguageCode { get; set; }
public IncludeExpression Include { get; set; }
}
所有参数获取值的唯一方法是:
有
FromQuery在行动,所以我没有错误Unsupported Media Type在 Request 类中有
FromRoute来绑定 PostId。
难道没有其他方法可以做到这一点吗?
我尝试了以下方法,这对我来说是合乎逻辑的,但不起作用:
[ApiController]
public class PostController : Controller
{
[HttpGet("posts/{postId:int:min(1)}")]
public async Task<IActionResult> GetByPostId([FromRoute, FromQuery]GetByPostIdRequest request)
{
}
}
【问题讨论】:
-
post ID的action方法中的另一个参数怎么样?
-
我相信缓存最好使用 url “posts/postId”,然后使用参数来塑造响应......例如,对于“categories/categoryId/posts”。没有?
-
我的意思是动作方法中的另一个参数,例如
[FromQuery]GetByPostIdRequest request, [FromRoute]int postId -
我明白了......关键是我的服务层只接受一类类型的请求,所以我需要将 ID 添加到控制器内的请求中,这样就多了一步。
-
你的服务层和你的 UI 层不是一回事,也许一开始就不应该使用相同的模型。
标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.2