提问人:John 提问时间:11/17/2023 最后编辑:John 更新时间:11/17/2023 访问量:51
ASP.NET Core 6 Web API / C#:路由,POST方法,如何设置默认参数
ASP.NET Core 6 Web API / C# : routing, POST method, how to set default param
问:
在控制器顶部设置路由:
[Route("api/import/v1")]
[ApiController]
public class ImportController : ControllerBase
{
// .....
}
并将其设置为测试函数:
[AllowAnonymous]
[HttpPost("{id1}/{id2}/{id3}")]
public ActionResult Test(string id1, string id2, string id3)
{
// .....
}
在 Postman 中,如果我调用:
https://localhost:7045/api/import/v1/111/222/333
它击中了方法,一切都很好。POST
但是,如果 id3 字符串参数是可选的,我该如何设置默认值?
我试过:
[AllowAnonymous]
[HttpPost("{id1}/{id2}/{id3?}")]
public ActionResult Test(string id1, string id2, string? id3 = "000")
{
// .....
}
和调用
https://localhost:7071/api/import/v1/111/222/null
但 ID3 设置为 null。
我也试过了
[AllowAnonymous]
[HttpPost("{id1}/{id2}/{id3}")]
public ActionResult Test(string id1, string id2, string? id3 = "000")
{
// .....
}
但我得到相同的结果 - 作为 null 传入。id3
有什么想法吗?
更新 更新 更新只是为了测试目的,我添加了一个新功能
[AllowAnonymous]
[HttpPost("Test2")]
public ActionResult Test2(string id1, string id2, string? id3 = "000")
{
// .....
}
如果我然后使用邮递员打电话 https://localhost:7045/api/import/v1/Test2?id1=111&id2=111&id3=
这将按预期返回 id1 = 111 id2 = 111 id3 = 000
但是当我尝试打电话时
https://localhost:7071/api/import/v1/111/222/
我收到 404 未找到
为什么当我尝试使用路由时它不起作用?
答: 暂无答案
评论
program.cs
curl -X 'POST' 'http://localhost:3000/api/import/v1/1/22' -H 'accept: */*' -d ''
{"id1":"1","id2":"22","id3":"000"}
string id3 = "000"
000
000
null