我有用于按书目查找书的终结点。
本书参考文献的字符串可以包含空格和任何特殊字符,例如mybook
,my book
,my-book
,my/book
,book++
// GET api/books/reference/{reference}
[HttpGet("reference/{reference}")]
public ActionResult<BookItem> FindByReference(string reference)
这是我在测试时得到的:
GET api/books/reference/mybook
OK
GET api/books/reference/my book
OK
GET api/books/reference/my-book
OK
GET api/books/reference/my+book
404 Not found
GET api/books/reference/my/book
404 Not found
GET api/books/reference/book++
404 Not found
在URL路径中对此reference
参数进行编码的正确方法是什么,以便通过路由对其进行正确解析?那有可能吗?
答案 0 :(得分:0)
URL的编码是客户端调用API的责任,如果客户端需要适当的响应,则必须提供有效的URL。如果您对示例进行编码,则会得到:
GET api/books/reference/mybook
GET api/books/reference/my%20book
GET api/books/reference/my-book
GET api/books/reference/my%2Bbook
GET api/books/reference/my%2Fbook
GET api/books/reference/book%2B%2B
这些现在应该可以工作了。
如果您需要有关实际编码的帮助,则必须使用客户端源代码来编辑问题。