# 逐步建立 想要一次把所有事物建立成功是不太可能的,我們將透過一步一步小型的、容易測試的步驟,來完成建置。 1. 在專用伺服器或虛擬機器中安裝 OxOffice Online,並確定瀏覽器可以正確連接到 OxOffice Online。 ``` https://:/hosting/discovery ``` 2. 在您的應用程式增加 WOPI REST API 的進入點。目前只須在 GET 請求時,回應「Hello World」即可,您可以透過瀏覽器進行測試。必要的話,需要用伺服器 rewrite 功能,將 REST API 導向您設計的進入點。此時,測試該進入點,應該會得到 Hello World 的回應: ``` https:///<...>/wopi/files//contents ``` 3. 實作 CheckFileInfo 進入點。確保以下位址: ``` https:///<...>/wopi/files/ ``` 回應 JSON 內容,類似: ```json {"BaseFileName": "test.txt", "Size": 11} ``` 4. 您應該可以從步驟 1,取得 OxOffice Online 預先建置的 discovery.xml,其中的 **urlsrc** 即為 OxOffice Online 編輯擋案用的位址,您可以把 `WOPISrc=https:// 主機 URL>/<...>/wopi/files/` 加在其後,結果如下: ``` https://:/loleaflet//loleaflet.html?WOPISrc=https:///<...>/wopi/files/ ``` 接著建立一個名為 test.html 的測試頁,其中包含以下內容: ```html
``` 當您從瀏覽器載入 test.html 並點擊 `Load OxOffice Online` 按鈕,將會開啟一份文字文件,內容是步驟 2 WOPI REST API 所提供的「Hello World」。如果您的 WOPI 主機和 OxOffice Online 位於不同的電腦上,請修改位於 OxOffice Online 主機的 /etc/oxool/oxoolwsd.xml,在`` → ``下,新增一筆 `` WOPI 主機的位址及埠號。 5. 到了這裡您已經掌握了基本要領了,然後我們開始擴充 JavaScript 的部份:建立一個包含 OxOffice Online 的 iframe,並且提供一個真正有存取權的 token。對 OxOffice Online 而言,這個存取用的 token 可以是隨機的文字、或是只有數字、字元以及底線所組成。 6. 現在,請更新您的 REST API 進入點,讓它能提供真實的檔案資料,以代替「Hello World」 以及步驟 3 所寫死的 JSON 回應。這裡,您需要送出真實檔案內容,並參考 [**CheckFileInfo**](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-checkfileinfo%EF%BC%9A%E4%BB%A5%E4%B8%8B-url) 表列屬性,送出相應的 JSON 回應。 7. 實作 [**PutFile**](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-putfile%EF%BC%9A%E6%9B%B4%E6%96%B0%E6%AD%A3%E5%9C%A8%E7%B7%A8%E8%BC%AF%E7%9A%84%E6%AA%94%E6%A1%88%E3%80%82%E8%A9%B2--0) 進入點,讓編輯結果也能回存雲端硬碟。因此,需實作 POST 請求的進入點,如下: ``` https:///<...>/wopi/files//contents ``` 8. 如果您暫時不想實作 [**PutRelativeFile**](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-putrelativefile%EF%BC%9A%E5%8F%A6%E5%AD%98%E6%96%B0%E6%AA%94-0) 進入點,請把 [**CheckFileInfo**](https://docs.ossii.com.tw/books/oxoffice-online-8LU/page/8efb1#bkmrk-oxoffice-online-%E5%8F%AF%E7%94%A8%E7%9A%84-) 的 **UserCanNotWriteRelative** 設為 **true**,待前述功能都完成後再完善它。