我有一個服務器上的MySQL數據庫,我使用我寫的腳本插入數據。我必須打開www.mywebsite.com/rest/create.php?param=value¶m2=value2
來創建一個新的資源,然後我必須打開另一個php文件來編輯一個項目等。這是基本的方法:一個PHP文件需要一些參數,然後將文件存儲在數據庫中。德爾福實現REST服務器
我使用TIdHTTP
,因爲我做的是這樣的可能性:
TIdHTTP1.Get(www.mywebsite.com/rest/create.php?param=value¶m2=value2);
的create.php
頁面返回用JSON編碼的一些數據。在我的Android應用程序中,我創建了一個能夠解析接收到的響應php頁面的json的休息客戶端。例如,如果我調用.../show.php?id=3
,那麼該頁面的結果是帶有我的數據的json;稍後,android應用程序將解析它們並向用戶顯示一些結果。
問題
與其說www.mywebsite.com/rest/create.php?param=value &參數2 =的數值2我希望能夠做這樣的事www.mywebsite.com/rest/create/?param=value & param2 = value2。基本上我不想在* .php中使用文件名,但我想使用第二種URI而不使用文件名。
的問題是,這是我第一次,我真的不知道該怎麼辦。
可能的解決方法。在閱讀Expert Delphi
後,我找到了一個可能的解決方案。我可以創建一個Linux服務器WebBroker
(這樣我就可以導出Apache模塊*的.so),實現一些動作是這樣的:
當有/ REST /創建/請求(使用OnAction事件)我可以運行一個TIdHTTP1.Get(www.mywebsite.com/rest/create.php?param=value¶m2=value2);
並存儲結果。通過這種方式,我可以根據需要打開www.mywebsite.com/rest/create/並保存數據。即使它在Linux機器上(如apache模塊),indy可以執行get請求嗎?我已經看到獨立服務器在indy下運行,所以我猜indy應該能夠在apache模塊上工作。
不幸的是,我有這樣的事情相當新的,其實我也真的不知道該怎麼在網上搜索找到一個解決方案。我的解決方案可以工作,但我非常肯定,有一個適當的最終有效的方法來做到這一點。
注意:這只是我做了一些研究後的想法,我不確定這是做我需要的正確方法。而不是做我上面寫的,我只需要用PHP或Apache做些什麼?是否有另一種標準(最好)的方式來創建REST服務?
我想最常用的方法是重寫uri。如果你使用Apache,然後尋找mod_rewrite。 – bepe4711
Indy包含一個HTTP服務器組件(TIdHTTPServer),您可以在獨立的可執行文件(無Apache模塊)中使用它,這使測試變得簡單。然後,對於其他功能(如HTTPS和URL重寫),可以使用Apache HTTP服務器作爲反向代理。 (我使用Indy和Free Pascal,而不是使用Delphi) – mjn42
@ mjn42感謝您的幫助:)所以基本上我可以創建服務器和所有東西,但最後我必須使用Apache來設置正確的URL。 Apache是正確管理URI的人嗎? –