gpt4 book ai didi

angularjs - 单页应用程序应该如何提供永久链接?

转载 作者:行者123 更新时间:2023-12-04 20:35:17 25 4
gpt4 key购买 nike

为通过单页应用程序管理的资源提供可公开访问的 URL 的约定是什么?我认为这是一个架构设计问题,但我希望在 AngularJS 中开发一个 SPA,以防万一。我是 SPA 新手。

用户将通过 SPA 创建、查看和修改各种资源(例如基于服务器的对象)。公众也可以通过永久链接 URL 访问这些相同的资源。我对 SPA 在访问资源的永久链接 URL 时为访问者显示资源感到满意。

我只能想到这两种方法:

  • 将所有资源放在http://example.com/resourcetype/resourceID ,在这里实现 RESTful API(改变 HTTP 方法)。
  • 将所有永久链接放在 http://example.com/resourcetype/resourceID并点击 SPA http://example.com/api/resourcetype/resourceID .

  • (在 /api 下设置永久链接似乎不合理。“永久链接”是指资源的公共(public)未登录 URL。)

    我希望通过 SPA 导航到资源的用户到达可共享的 URL,因为想要共享该页面的用户会首先考虑共享其 URL,而不是首先找到指向永久链接页面的链接。这建议使用第一种方法,但第二种方法更适合通过 URL 对 API 进行版本控制,例如 /api/v1。 , /api/v2 , ETC。

    最好避免 URL 中的散列。我知道我可以在 AngularJS 中使用 HTML5 模式将它们隐藏在支持该模式的浏览器中。这也需要服务器端支持,我已经看到将深层链接重写为指向 SPA 访问 URL 的链接的解决方案。

    我想知道人们实际上在做什么,以及人们是否发现自己在实践中限制了 SPA 的使用。谢谢你的帮助!

    最佳答案

    在我们的办公室,我们同时使用 resourceIds以及 slugs .任何可共享的资源都会有一个 slug由资源模型的属性生成的属性。例如,为我们的 SPA 撰写文章的任何人都必须为文章命名。该标题在保存时由服务器验证,以确保没有其他文章包含相同的标题。如果标题是唯一的,则为 slug为该资源生成并保存到我们的数据库中,否则服务器会响应一条错误消息,指出标题不是唯一的。

    然后在我们的状态声明中,当用户访问 http://example/articles/article-slug ,我们在 API 中查询与 article-slug 匹配的文章如果没有找到文章,则返回 404。

            .state('app.articles.article', {
    url: '/:slug',
    views: {
    articles: {
    templateUrl: tpl + 'views/frontend/articles.article.html',
    controller: 'ArticleCtrl',
    resolve: {
    article: ['$stateParams', function ($stateParams) {
    var slug = $stateParams.slug;
    // query API for slug
    }]
    }
    }
    }
    })

    关于angularjs - 单页应用程序应该如何提供永久链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37082549/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com