2017-04-11 89 views
1

是否有可能在BaseX中創建一個公共REST API,以便客戶端根本不需要驗證?BaseX:沒有驗證的公共REST API

此公共API應該是隻讀的。我已經完成的工作是創建一個名爲HTTPGuest的用戶,該用戶可以讀取某些數據庫。

然後我試了basexhttp -UHTTPGuest。但API仍然希望通過基本認證獲得憑證。

+1

如果使用BaseX 8.6及更高版本,它實際上應該就像你一樣,足以在命令行上指定用戶。 –

+1

是的,在答案發布之後,我意識到自己。在我的情況下,問題實際上是另一個:當我從不是'basexhttp'的父目錄的工作目錄執行'basexhttp'時,API請求基本認證。我現在有一個包裝腳本,它基本上只是'cd /.../basex/bin; 。/ basexhttp'。但是Jens Erat的答案對我來說仍然很有用,因爲現在我不必一直使用'-U'選項。 – Seb3736

回答

2

您可以通過修改web.xml文件,它通常位於~/BaseXWeb/WEB-INF/web.xml提供默認憑據。該文件包含以下塊>

<!-- REST Service (can be deactivated by removing this entry) --> 
    <servlet> 
    <servlet-name>REST</servlet-name> 
    <servlet-class>org.basex.http.rest.RESTServlet</servlet-class> 
    <!-- service-specific credentials 
    <init-param> 
     <param-name>org.basex.user</param-name> 
     <param-value/> 
    </init-param> 
    <init-param> 
     <param-name>org.basex.password</param-name> 
     <param-value/> 
    </init-param> 
    --> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>REST</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

這裏,取消對<init-param/>子樹和用戶/密碼組合添加到<param-value/>元素,例如

<!-- REST Service (can be deactivated by removing this entry) --> 
    <servlet> 
    <servlet-name>REST</servlet-name> 
    <servlet-class>org.basex.http.rest.RESTServlet</servlet-class> 
    <init-param> 
     <param-name>org.basex.user</param-name> 
     <param-value>HTTPGuest</param-value> 
    </init-param> 
    <init-param> 
     <param-name>org.basex.password</param-name> 
     <param-value>super-secret-passphrase</param-value> 
    </init-param> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>REST</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
+1

一個小的增加:使用BaseX 8.6,不需要再指定密碼(因爲無論如何它都是服務器實例已知的)。 –

+0

即使沒有設置'org.basex.password',也可以很好地工作。謝謝你們倆! – Seb3736