gpt4 book ai didi

c# - 中间带有属性路由的 Web Api 可选参数

转载 作者:太空狗 更新时间:2023-10-29 18:19:53 25 4
gpt4 key购买 nike

所以我正在使用 Postman 测试我的一些路由,但我似乎无法通过此调用:

API 函数

[RoutePrefix("api/Employees")]
public class CallsController : ApiController
{
[HttpGet]
[Route("{id:int?}/Calls/{callId:int?}")]
public async Task<ApiResponse<object>> GetCall(int? id = null, int? callId = null)
{
var testRetrieve = id;
var testRetrieve2 = callId;

throw new NotImplementedException();
}
}

postman 请求

http://localhost:61941/api/Employees/Calls不工作

错误:

{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:61941/api/Employees/Calls'.",
"MessageDetail": "No action was found on the controller 'Employees' that matches the request."
}

http://localhost:61941/api/Employees/1/Calls作品

http://localhost:61941/api/Employees/1/Calls/1作品

知道为什么我不能在我的前缀和自定义路由之间使用可选项吗?我已经尝试将它们组合到一个自定义路由中,但这并没有改变任何东西,每当我尝试删除 id 时,它都会导致问题。

最佳答案

可选参数必须在路由模板的末尾。所以你想做的事是不可能的。

Attribute routing: Optional URI Parameters and Default Values

你要么改变你的路线模板

[Route("Calls/{id:int?}/{callId:int?}")]

或者创建一个新 Action

[RoutePrefix("api/Employees")]
public class CallsController : ApiController {

//GET api/Employees/1/Calls
//GET api/Employees/1/Calls/1
[HttpGet]
[Route("{id:int}/Calls/{callId:int?}")]
public async Task<ApiResponse<object>> GetCall(int id, int? callId = null) {
var testRetrieve = id;
var testRetrieve2 = callId;

throw new NotImplementedException();
}

//GET api/Employees/Calls
[HttpGet]
[Route("Calls")]
public async Task<ApiResponse<object>> GetAllCalls() {
throw new NotImplementedException();
}
}

关于c# - 中间带有属性路由的 Web Api 可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729352/

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