【问题标题】:Select repository via the REST API通过 REST API 选择存储库
【发布时间】:2018-05-24 16:21:22
【问题描述】:

我正在尝试使用新的嵌入式可视化功能。我有一个指向 graphdb 服务器的 iframe,其 url 格式为:

http://localhost:7200/graphs-visualizations?uri=[...]&embedded

这很好用,但仅适用于默认或先前选择的存储库。我找不到无需手动转到http://localhost:7200/的方法来选择存储库

似乎存储库选择存储在 cookie 中,并且X-GraphDB-Repository HTTP 标头可用,但似乎无法与 iframe 一起使用。

有没有办法通过 url 选择存储库? &repository= 会很完美。

更多细节:我们有一个包含 N 个“研究”的应用程序,支持 N 个存储库(使用 SPARQL 查询),当用户选择一个研究,然后是一个 uri,我们想要显示一个 Visual Graph iframe。这适用于默认或之前选择的存储库,但是当她去另一项研究时,我们需要一种方法来透明地更新/选择 Workbench 应用程序中的存储库。

我们目前看到的唯一解决方案是使用代理来动态设置 cookie。但这似乎有点矫枉过正。

【问题讨论】:

    标签: graphdb


    【解决方案1】:

    GraphDB Workbench 有两种机制来控制当前选择的存储库。为了说明这一点,打开设置 > 存储库页面并检查:

    (1) “连接存储库”图标(存储库列表中的第一个选项)通过将其存储在本地存储中来控制当前选定的存储库。检查what is the difference between local storage and a cookie.

    (2) “设置为默认存储库”图标(存储库列表中的最后一个选项)控制默认服务器存储库。选择默认存储库时,服务器假定要将其分派所有HTTP请求(如链接数据发布),如可视图形。

    【讨论】:

    • 感谢您的回答,但我也无法通过 iframe 设置本地存储。我想将可视化嵌入到维护多个存储库的应用程序中,这样用户就不必手动转到另一个域并手动选择存储库。
    • 您想用一个可视化图表公开多个由用户控制的存储库吗?
    • 我们有一个包含 N 个“研究”的应用程序,支持 N 个存储库(带有 SPARQL 查询),当用户选择一个研究,然后选择一个 uri 时,我们想要显示一个 Visual Graph iframe。这适用于默认选择的存储库,但是当她去另一个研究时,我们需要一种方法来透明地更新/选择 Workbench 应用程序中的存储库。
    【解决方案2】:

    我们最终决定配置一个 nginx 代理解决方法。它运行良好,但肯定缺少?repository= 查询功能。

    map $arg_repository $repo_cookie {
      "~^(?<repo>[0-9a-f]{32})$" "com.ontotext.graphdb.repository7200=$repo";
    }
    
    server {
      listen 7200;
      server_name localhost;
    
      location / {
        add_header Set-Cookie $repo_cookie;
        proxy_pass http://graphdb:7200;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多