我收到了一个错误,因为我为Get语句添加了一个FromQuery参数,以返回一个列表,而我已经有了一个Get语句,使用路由实现细节。有没有人在标准Get中遇到过路由(细节)和附加参数的问题?
我有一个api来了解一个案例的细节:
[HttpGet("{id}")]
public async Task<ActionResult<CaseDTO>> Get(string guid)
{
...
}我有一个api来获得一个案例列表:
[HttpGet]
public async Task<ActionResult<CaseListDTO>> Get()
{
...
}所有这些都很好,但我想在list函数中添加一个参数,以便在必要时提供返回其他字段的机会:
[HttpGet]
public async Task<ActionResult<CaseListDTO>> Get([FromQuery]string mode = "")
{
...
}有没有其他人遇到过这种情况,是否有处理这种情况的最佳做法?
更新
我还没有完全解决这个问题,但我得到了其中的一部分。
以下是我所做的:
[Route("{caseId:int}")]
public async Task<ActionResult<OutboundCaseDTO>> Get(int caseId)我在控制器/类级别有这样的信息:
[Route("api/v{version:apiVersion}/[controller]")]当我遇到RoutePrefixAttribute的问题时,这个所以贴帮助了我。
我想有三种方法:
现在我有1,3和4。
通过提供的文件进行工作是有帮助的,但是有一个对RoutePrefix的引用使我偏离了方向,但我希望随着这一过程的发展,我需要回到它。
更多发现
我在运行时遇到了一个错误:
无法将约束引用'string‘解析为类型。使用'Microsoft.AspNetCore.Routing.RouteOptions.ConstraintMap‘注册约束类型
发布于 2022-07-03 17:31:25
你需要的是路由。因为您有两个名称相同(但签名不同)的方法,所以应用程序路由无法确定它应该调用哪一个。您可以通过指定路由来克服这一问题。这样,取决于您传递的URL类型(即请求的资源类型),它将该方法转发给适当的Get方法。
阅读更多关于路由的信息- https://learn.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
这是- ASP.NET网络API中多个GET方法的单控制器的潜在复制。
https://stackoverflow.com/questions/72848449
复制相似问题