我如何才能以不同的顺序并使用一些可选参数来接受请求?
https://localhost:44314/api/courses/page=2&pageSize=6&language=test&institution=test&area=test
https://localhost:44314/api/courses/page=2&pageSize=6&institution=test&area=test
https://localhost:44314/api/courses/page=2&pageSize=6&area=test&language=test
我尝试了如下:
[HttpGet]
[Route("page={page:int}&pageSize={pageSize:int}&language={language?}&institution={institution?}&area={area?}")]
public async Task<ActionResult<CourseViewModel>> ListCourses(int page, int pageSize, string language="", string institution="", string area="")
我有错误为:
System.ArgumentException:'可选参数必须位于该段的末尾。在“ page = {page}&pageSize = {pageSize}&language = {language?}&institution = {institution?}&area = {area?}”段中,可选参数“ language”后跟“&institution =”。参数名称:routeTemplate'
删除路由模板,路由表将使用操作的参数通过请求的URL中的查询字符串来匹配路由
//GET api/courses?page=2&pageSize=6&language=test&institution=test&area=test
//GET api/courses?page=2&pageSize=6&institution=test&area=test
//GET api/courses?page=2&pageSize=6&area=test&language=test
[HttpGet]
[Route("")]
public async Task<ActionResult<CourseViewModel>> ListCourses(int page, int pageSize, string language = "", string institution = "", string area = "")
在这种情况下,顺序无关紧要。一旦它们出现就可以匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句