我正在寻找在几乎所有的Web API方法之间传递通用参数的最佳方法。这种情况下的参数是存储库标识符,因为登录SPA时可以选择使用哪个数据库从/向其读取和写入数据。然后,此选择将存储在应用程序中,并在将来的所有API调用中使用。
我考虑的选择是:
[Route("api/{repo}/{user}/{id}")]
。这里的优点是它可能更明确。是否有API中常用参数的最佳实践指南?关于何时应使用自定义标头值传递参数FromUri
和FromBody
的区别?
答案 0 :(得分:0)
这取决于具体情况,但如果您已经制作了API,每次需要传递某些参数时,那么最好在标头中发送此参数。 HTTP标头用于发送有关请求上下文的额外信息,但请注意添加过多的标头键值。
通过header和querystring(通过URL),您只能以键值对方式发送数据,而通过HTTP正文,您可以发送不同类型的有效负载(数据),即JSON,XML,txt,FileStream等。
根据选择发送数据的方法,数据大小存在某些限制。通过标题,您可以为每个键值对传递最大8KB大小的数据,在查询字符串中,您可以添加多达2048个字符,通过正文,我们可以发送多达0到> = 2 MB的数据(大小可能因服务器而异)到服务器)。
有关详细信息,请参阅RFC 7231
答案 1 :(得分:0)
它取决于用例
如果您需要在用户之间共享链接,您肯定需要使用路径 它看起来也更透明,更容易理解
如果您想隐藏最终用户的信息,我相信您需要使用标题
如果您尝试在此处实现某种多租户,我还可以建议为每个存储库使用不同的子域,然后添加midleware / filter / etc以根据请求子域解析存储库。您可以自动创建子域(大多数流行的提供商都有API来执行此操作)