我是API的新手,我知道了其他API的主要路径:path
(例如www.example.com/cars
和query
参数(例如www.example.com/cars?color=blue
)
我刚刚访问了一个电子商务网站,但对当前的路径感到困惑。我选择了类别iphone-8
,并获得了该网址:https://www.example.fr/iphone-8.html
在同一页面上,我过滤了价格在250
至300
欧元之间的所有电话。这是新的网址:https://www.example.fr/iphone-8.html#price=250&price=300
此网址是否表示由于#
而仅将过滤器应用于html,因此没有用于过滤的api调用?
答案 0 :(得分:1)
此网址是否表示由于#而仅将过滤器应用于html,因此没有用于过滤的api调用?
没有,不会。
尝试进行的实验是将原始页面加载到您的浏览器中,打开用于监视网络流量的开发人员工具,然后执行搜索。
您可能会发现,当您在网页上操作过滤器控件时,实际上是在运行Java脚本代码,并进行调用以从某个后端端点获取数据,然后重新执行-在客户端上呈现网页。该片段正在更新,因此,如果您要标记链接或将其复制到浏览器中的另一个选项卡,则底层javascript可以重现“相同”的结果(通过从片段中获取搜索参数并重复搜索)
应该有可能直接从浏览器本身重复同样的调用(当然,不一定会获得HTML渲染,但是您可能能够以它们自己的本机表示形式查看过滤后的结果( application / json,也许)。
使用碎片而不是查询价格参数有什么好处?
Fragments不是absolute-URI的一部分,而查询部分是
。也就是说,查询部分仍然是主要资源标识符的一部分,并且是发送到服务器的请求行的一部分。
但是片段用于标识次要资源;嵌入某些主要资源中的资源。
考虑:
https://tools.ietf.org/html/rfc3986#section-3.5
这标识了包含在主资源(RFC 3986的HTML表示形式)中的辅助资源(特别是第3.5节)。因此,我们首先通过加载主要资源(整个RFC)来“获取”次要资源,然后使用片段标识符和HTML处理规则来发现文档中的适当元素。
片段部分严格是客户端关注的问题。