Web API 路由相互冲突
Web API Routes conflicting with each other
抱歉,如果之前有人问过这个问题,我可能搜索得不够好。
我正在使用属性路由。基本上我有
[Route("api/studies")]
这给了我一个类型研究列表。
[Route("api/studies/{id}/{detail?}")]
这给了我一个单一的研究。它有一个可选参数 detail,用于指定详细程度。
[Route("api/studies/{id}/subjects")]
这给了我一个研究科目列表。
问题是,当我测试 subjects 路由时,它调用 /api/studies/{id}/{detail?}
并将 "subjects" 作为 detail 参数传入。我完全理解为什么,我只是好奇是否有办法防止它。
好的伙计们,我明白了。首先,我没有给他们下达命令。我这样做了,仍然没有用。但是...对我的 post 并不完全诚实,我遗漏了一些我认为不相关的东西。主题有一堆可选参数,它们是整数,我认为这样输入就可以了:
public List<Subject> Subjects(long id, int? limit, int? offset)
显然这还不够好。需要是:
public List<Subject> Subjects(long id, int? limit = null, int? offset = null)
不知道我必须将它们指定为 null!
抱歉,如果之前有人问过这个问题,我可能搜索得不够好。
我正在使用属性路由。基本上我有
[Route("api/studies")]
这给了我一个类型研究列表。
[Route("api/studies/{id}/{detail?}")]
这给了我一个单一的研究。它有一个可选参数 detail,用于指定详细程度。
[Route("api/studies/{id}/subjects")]
这给了我一个研究科目列表。
问题是,当我测试 subjects 路由时,它调用 /api/studies/{id}/{detail?}
并将 "subjects" 作为 detail 参数传入。我完全理解为什么,我只是好奇是否有办法防止它。
好的伙计们,我明白了。首先,我没有给他们下达命令。我这样做了,仍然没有用。但是...对我的 post 并不完全诚实,我遗漏了一些我认为不相关的东西。主题有一堆可选参数,它们是整数,我认为这样输入就可以了:
public List<Subject> Subjects(long id, int? limit, int? offset)
显然这还不够好。需要是:
public List<Subject> Subjects(long id, int? limit = null, int? offset = null)
不知道我必须将它们指定为 null!