2012-12-26 88 views
5

我在Delphi XE3中實現了一個REST服務器API(第一次在Delphi中使用約十年,所以有點生疏)。目前它使用Indy服務器進行調試,但最終它將成爲ISAPI dll。在Delphi XE3 DataSnap服務器中訪問請求頭文件

現在我已經實現了許多TDSServerClass類,並且想要訪問類方法中的請求頭。例如,當用戶請求mysite.com/datasnap/rest/foo/bar時,我希望能夠讀取名爲bar的foo類方法中的頭文件。這可能嗎?

如果沒有,是否有可能在傳入請求到達REST類方法之前創建全局篩選器?我需要檢查傳入請求的API密鑰和用戶身份驗證,但不確定實現的最佳方式。謝謝。

+0

您使用的是內置的身份驗證/授權對象? – jachguate

+0

編號API密鑰和用戶令牌在請求標頭中傳遞。我需要閱讀它們。 – Joel

+0

ps。不應在服務器級別進行身份驗證,因爲只有某些類方法需要用戶身份驗證(令牌),而其他類不需要(所有方法都需要有效的API密鑰)。 – Joel

回答

2

我不知道如果有什麼在XE3改變,但在XE2你可以做到以下幾點:

uses 
    Web.HTTPApp, 
    Datasnap.DSHTTPWebBroker; 

function TServerMethods1.EchoString(Value: string): string; 
var 
    Module: TWebModule; 
begin 
    Module := GetDataSnapWebModule; 
    Result := Module.Request.RemoteIP + ': ' + Value; 
end; 
+1

因此,這回答瞭如何從服務器類方法內訪問TWebRequest對象的問題。我將標記爲正確的,但爲了解析標題我使用這個解決方案加上這個答案來訪問標題:http://stackoverflow.com/questions/8666411/enumerate-twebrequest-http-header-fields。 – Joel

相關問題