2012-07-02 9 views
7

Ich muss einen einfachen REST-Server in Delphi und einen Client in Ruby on Rails schreiben. Ich habe alle Videos von Marco Cantu über REST in Delphi angeschaut und ich habe eine Frage:Verwendung der REST-Anforderung in Delphi

Wie kann Delphi Prozessanforderungen wie "https://stackoverflow.com/users/1" wo 1 die ID eines Benutzers ist?

Alle Beispiele I Gebrauch einfache Funktionen (wie EchoString(value) oder ReverseString(Value)) und der Anfrage gesehen habe, ist "Datasnap/rest/ClassName/EchoString/Value", aber ich brauche eine Anfrage wie "Datasnap/rest/classname/123". Beispiel: TContractsCollection ist eine Sammlung von Verträgen und ich möchte den Vertrag mit ID=324556 ansehen. So in einem Browser (und im RoR-Client) wird es (zum Beispiel):

"http://localhost:3000/DataSnap/rest/TContractsCollection/324556" 

Aber Delphi schreibt:

"TContractsCollection method not found in the server method list"

Irgendwelche Ideen?

+0

eingestellt werden Es gibt einen neuen, leichten Rahmen für Delphi und Free Pascal, die [RESTful Services Support] (http://mikejustin.wordpress.com/dwf/) mit der Anforderungs-Parameterzuordnung enthalten, so dass Sie die URL mit placeho deklarieren können Absender wie '/ users/{userId}'. (Ich bin der Autor dieses Frameworks) – mjn

+0

Enthüllung der internen Implementierungsdetails des Servers wie der Klassenname (TContractCollection) ist kein gutes RESTFul-Design. Die Entitäten (oder Ressourcen) sollten auf leicht verständliche Weise benannt werden. Eine RESTFul-URL wäre in diesem Fall http://mydomain.com/resources/contracts/324556, für weitere Beispiele siehe http://stackoverflow.com/a/256359/80901 – mjn

+0

danke, mjn. Ich habe es geschrieben, um zu betonen, dass dies eine Klasse ist. – yamaxim

Antwort

0

Sie eine Funktion in der TdmServerModule wie Funktion definieren können

ProcessContract(ContractNo:Integer): String 

wenn

http://localhost:3000/DataSnap/rest/ProcessContract/324556 

genannt wird, wird die ContractNo zu 324.556

Verwandte Themen