2012-12-26 17 views
5

Wdrażam interfejs API serwera REST w Delphi XE3 (po raz pierwszy używam Delphi od około dekady, więc jestem trochę zardzewiały). Obecnie używa serwera Indy do celów debugowania, ale ostatecznie będzie to biblioteka ISAPI.Nagłówek żądania dostępu w serwerze DataSnap Delphi XE3

Teraz zaimplementowałem kilka klas TDSServerClass i chcę uzyskać dostęp do nagłówka żądania w ramach metod klasy. Na przykład, gdy użytkownik zażąda mysite.com/datasnap/rest/foo/bar, chcę móc odczytać nagłówek w ramach metody klasy foo o nazwie bar. czy to możliwe?

Jeśli nie, czy można utworzyć globalny filtr żądań przychodzących, zanim dojdą one do metody klasy REST? Muszę sprawdzić klucz API i uwierzytelnianie użytkownika na przychodzących żądaniach i nie wiem, jaki jest najlepszy sposób wdrożenia. Dzięki.

+0

Czy korzystasz z wbudowanego w obiekt uwierzytelniania/autoryzacji? – jachguate

+0

Nie. Klucz API i token użytkownika są przekazywane w nagłówku żądania. Muszę je przeczytać. – Joel

+0

ps. Uwierzytelniania nie należy wykonywać na poziomie serwera, ponieważ tylko niektóre metody klasy wymagają uwierzytelniania użytkownika (token), a inne nie (wszystkie metody wymagają poprawnego klucza API). – Joel

Odpowiedz

2

ja nie wiem, czy coś się zmieniło w XE3, ale w XE2 można wykonać następujące czynności:

uses 
    Web.HTTPApp, 
    Datasnap.DSHTTPWebBroker; 

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

To odpowiada na pytanie, jak uzyskać dostęp do obiektu TWebRequest z metody klasy serwera. Zamierzam oznaczyć jako poprawne, ale aby przeanalizować nagłówki, skorzystałem z tego rozwiązania i tej odpowiedzi, aby uzyskać dostęp do nagłówków: http://stackoverflow.com/questions/8666411/enumerate-twebrequest-http-header-fields. – Joel

Powiązane problemy