目前我正在为我的MVC框架编写路由代码,该代码能够呈现HTML部分(视图)。这些部分可以在服务器端或客户端加载(使用Mootools HTML请求)。然后,从多个部分构建每个页面的布局。因为我希望它符合ReST,每个HTML部分(视图)映射到定义的URL空间中的URL,如下所示(缩进显示预期的文档结构):
...
/
/navigation
/content
/profile
/profile/1
/profile/1/message/
/profile/1/message/1
/profile/1/message/2
...
现在的问题是,我希望人们能够访问“/ profile”,然后不显示HTML部分,而是完整的布局。我正在考虑以下事项:
1)在部分URL中创建单独的名称空间/前缀,例如:
2)发送自定义HTTP标头以请求部分或无自定义HTTP标头请求完整布局。
第一个选项是更符合ReST(缓存友好),但我仍然不确定(这是真正的问题)关于我可能仍然不知道的其他选项。
在开始实施上述解决方案之一之前,我有以下问题:
答案 0 :(得分:1)
当您请求客户端时,服务器将接收带有值xmlhttprequest的额外标头HTTP_X_REQUESTED_WITH。
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
....
}
这是一个可靠的标题来测试,而不是添加自定义类型。
答案 1 :(得分:1)
选项1绝对是选项2的更好解决方案。在RESTful系统中,我们始终创建新资源以弥补方法的不足。
创建自定义标题是一个非常糟糕的主意。