另一个选项是使用内容树、“星座”项目以及专用于此目的的子布局/布局组合:
[siteroot]/API/*/*/*/*/*/*/*/*/*
以上路径允许您在 1 至 9 个区段之间拥有任何位置 - 如果您需要更多的话, 您可能需要重新思考您的进程, 国际海事组织 。 这也保留了全部的“ 遗址核心 ” 上下文 。 当无法在文件夹中找到某个项目时, 点点试图寻找“ 全部 ” 星项, 如果存在的话, 点点会让它变成一个“ 404 ” 。
有一些方法可以用来做休息的方法和子布置(或子布置,如果你想将它们以深度分隔,以简化解析) 。
您可以选择遵循一般的“ 标准”, 并使用 Get、 PUT 和 POST 调用来与这些项目进行互动, 但随后您无法使用不使用自定义后端缓存代码的 站点缓存 。 或者, 您可以将您的 API 分割成三个不同的树 :
[siteroot]/API/GET/*/*/*/*/*/*/*/*/*
[siteroot]/API/PUT/*/*/*/*/*/*/*/*/*
[siteroot]/API/POST/*/*/*/*/*/*/*/*/*
这样可以缓存 GET 请求( 因为 GET 请求只应该获取数据, 而不是更新它) 。 请使用适当的缓存计划, 基本上它应该根据数据、 用户等的每一个变换来缓存, 如果您打算在任何这些背景中使用它 。
如果您要创建多个子插件, 我建议创建一个基础类, 处理 Get、 PUT 和 POST 的一般方法, 然后用这些类作为您的子插件的基础 。
在您的子布局中, 您只需获取请求对象, 获取路径( 以及查询是否使用查询), 分割它, 并按您使用标准路由的方式执行切换大小写逻辑 。 对于 PUT, 请使用 响应 。 ReadBinary () 。 对于 POST, 请使用 请求 。 Form 对象获取所有窗体元素, 并通过它们来处理所提供的信息( 将您的所有形式数据都放入一个单个 JSON 对象, 以字符串的形式封装起来可能比较容易( 所以. NET 视其为字符串, 因而是单个属性), 然后您在文章中只有一个元素可以根据用户指定的 POST 路径进行消毒 。
复杂? 是的, 有效? 是 。 推荐? 那么... 如果你在一个共同的环境里( 多个工地), 而且您不希望管道处理器中每个工地都发生这种处理, 那么这个解决方案就起作用了 。 如果您能够使用带有点点的 MVC, 或者没有问题改变管道处理器, 那么这很可能更有效率 。
基于内容的方法的一个好处是,上下文生命周期与标准的“遗址核心”页面(logins,等等)完全相同,所以在生命周期的这一时刻,你得到了与任何其他项目一样的控件。与此相反的是,在输入代码之前,你必须处理整个页面生命周期负荷...管道处理器可以跳过许多“遗址核心”进程,直接获取所需的数据,使其更快。