如何在URL路径中正确编码Web API参数?

时间:2018-12-27 17:22:10

标签: c# asp.net-web-api

我有用于按书目查找书的终结点。

本书参考文献的字符串可以包含空格和任何特殊字符,例如mybookmy bookmy-bookmy/bookbook++

// 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参数进行编码的正确方法是什么,以便通过路由对其进行正确解析?那有可能吗?

1 个答案:

答案 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

这些现在应该可以工作了。

如果您需要有关实际编码的帮助,则必须使用客户端源代码来编辑问题。