Universal Resouce Locators bzw. URLs identifizieren Dokumente, z.B. HTML-Seiten, die auf SOAP- oder HTTP-Webdiensten zur Verfügung stehen. Die in SQL Anywhere benutzten URLs halten sich an das Muster, das Ihnen vom Web bekannt ist. Benutzer, die in einem Datenbankserver nach Informationen suchen, merken meist nicht, dass ihre Anforderungen nicht von einem herkömmlichen eigenständigen Webserver verarbeitet werden.
Auch wenn SQL Anywhere-Datenbankserver das Standardformat verwenden, interpretieren sie URLs auf andere Weise als Standard-Webserver. Die Optionen, die Sie beim Start des Datenbankservers angeben, wirken sich ebenfalls auf ihre Interpretation aus.
Die allgemeine Syntax die URLs lautet wie folgt:
{ http | https }://[ Benutzer:Kennwort@ ]Host[ :Port ][ /dbn ]/Dienstname[ Pfad | ?Suchteil ]
Folgendes ist eine Beispiel-URL: http://localhost:80/demo/XMLtable
.
Wenn ein Webdienst die Authentifizierung verlangt, können Benutzername und Kennwort direkt als Teil des URLs übergeben werden, indem Sie sie durch eine Doppelpunkt trennen und wie bei einer E-Mail-Adresse vor den Hostnamen setzen.
Wie alle Standard-HTTP-Anforderungen enthält der Beginn des URLs den Hostnamen oder die IP-Nummer und optional eine Portnummer. Die IP-Adresse oder der Hostname und die Portnummer müssen jenen entsprechen, an denen der Server auf Verbindungen wartet. Die IP-Adresse ist die Adresse einer Netzwerkkarte des Computers, auf dem SQL Anywhere läuft. Die Portnummer ist die beim Start des Datenbankservers in der Option -xs angegebene Portnummer. Wenn Sie keine Portnummer angegeben haben, wird die Standardportnummer für diesen Diensttyp verwendet. Beispielsweise wartet der Server standardmäßig an Port 80 auf HTTP-Anforderungen. Weitere Hinweise finden Sie unter Serveroption -xs.
Als nächster Teil, der zwischen Schrägstriche gesetzt ist, kommt in der Regel der Name der Datenbank. Diese Datenbank muss auf dem Server laufen und Webdienste enthalten.
Die Standarddatenbank wird benutzt, wenn kein Datenbankname im URL erscheint und der Datenbankname nicht mit dem DBN-Verbindungsparameter für die Serveroption -xs angegeben wurde.
Der Datenbankname muss nicht angegeben werden, wenn der Datenbankserver nur eine Datenbank ausführt oder mit dem Verbindungsparameter DBN zur Option -xs angegeben wurde.
Der nächste Teil des URLs ist der Dienstname. Dieser Dienst muss in der angegebenen Datenbank existieren. Der Dienstname kann über den nächsten Schrägstrich hinausgehen, da Webdienstnamen Schrägstriche enthalten dürfen. SQL Anywhere stimmt den Rest des URLs mit den festgelegten Diensten ab.
Wenn die URL keinen Dienstnamen enthält, sucht der Datenbankserver nach einem Dienst namens root. Wenn der benannte Dienst oder der "root"-Dienst nicht definiert ist, gibt der Server den Fehler 404 Not Found
zurück.
Je nach Zieldienst können angegebene Parameter auf unterschiedliche Weise angegeben werden. Parameter an HTML-, XML- und RAW-Dienste können auf folgende Arten übermittelt werden:
An den URL mit Schrägstrichen angefügt
Als eine explizite URL-Parameterliste bereitgestellt
Als POST-Daten in einer POST-Anforderung
Parameter für SOAP-Dienste müssen in eine Standard-SOAP-Anforderung eingefügt werden. Auf andere Art angegebene Werte werden ignoriert.
Damit auf Parameterwerte zugegriffen werden kann, müssen Parameter einen Namen haben. Diese Hostvariablennamen, denen ein Doppelpunkt (:) vorangestellt ist, können in die Anweisung eingefügt werden, die Teil der Webdienstdefinition ist.
Angenommen, Sie haben die folgende gespeicherte Prozedur definiert:
CREATE PROCEDURE Display (IN ident INT ) BEGIN SELECT ID, GivenName, Surname FROM Customers WHERE ID = ident; END; |
Eine Anweisung, die die gespeicherte Prozedur aufruft, erfordert eine Kunden-Identifizierungsnummer. Legen Sie den Dienst wie folgt fest:
CREATE SERVICE DisplayCustomer TYPE 'HTML' URL PATH ELEMENTS AUTHORIZATION OFF USER DBA AS CALL Display( :url1 ); |
Das Folgende ist ein entsprechendes URL-Beispiel: http://localhost:80/demo/DisplayCustomer/105.
Der Parameter 105
wird als url1
an den Dienst übergeben. Die Klausel PATH ELEMENTS gibt an, dass durch Schrägstriche getrennte Parameter als Parameter url1
url2
, url3
usw. übergeben werden müssen. Auf diese Weise können bis zu 10 Parameter übergeben werden.
Da es für die Display-Prozedur nur einen Parameter gibt, könnte der Dienst wie folgt festgelegt werden:
CREATE SERVICE DisplayCustomer TYPE 'HTML' URL PATH ON AUTHORIZATION OFF USER DBA AS CALL Display( :url ); |
In diesem Fall wird der Parameter 105
als url
an den Dienst übergeben. Die Klausel PATH ON gibt an, dass nach dem Dienstnamen alles weitere in Form eines einzelnen Parameters
namens url
übergeben werden soll. Im Folgenden wird die Zeichenfolge 105/106 als url
übergeben (und es wird ein SQL-Fehler erzeugt, da die gespeicherte Prozedur "Display" einen Ganzzahlwert erfordert).
http://localhost:80/demo/DisplayCustomer/105/106
Weitere Hinweise zu Variablen finden Sie unter Mit Variablen arbeiten.
Auf Parameter kann auch über die HTTP_VARIABLE-Funktion zugegriffen werden. Weitere Hinweise finden Sie unter HTTP_VARIABLE-Funktion [HTTP].
Eine weitere Methode zur Übergabe von Parametern ist über das URL-Suchteil-Verfahren. Ein URL-Suchteil besteht aus einem Fragezeichen (?) gefolgt von Name=Wert-Paaren, die durch das kaufmännische Und (&) getrennt sind. Der Suchteil wird an das Ende einer ULR angehängt. Das folgende Beispiel zeigt das allgemeine Format:
http://server/path/document?name1=value1&name2=value2 |
GET-Anforderungen werden auf diese Art formatiert. Wenn vorhanden, werden die benannten Variablen definiert und den entsprechenden Werten zugeordnet.
Eine Anweisung, die die gespeicherte Prozedur ShowSalesOrderDetail aufruft, erfordert z.B. sowohl eine Kunden-ID als auch eine Produkt-ID:
CREATE SERVICE ShowSalesOrderDetail TYPE 'HTML' URL PATH OFF AUTHORIZATION OFF USER DBA AS CALL ShowSalesOrderDetail( :customer_id, :product_id ); |
Das Folgende ist ein entsprechendes URL-Beispiel: http://localhost:80/demo/ShowSalesOrderDetail?customer_id=101&product_id=300.
Wenn Sie URL PATH auf ON oder ELEMENTS gesetzt haben, werden zusätzliche Variable definiert. Allerdings sind beide gewöhnlich voneinander unabhängig. Sie können in angeforderten URLs die Verwendung von Variablen gestatten, indem Sie URL PATH auf ON oder ELEMENTS setzen. Das folgende Beispiel zeigt, wie beide Einstellungen gemischt werden können:
CREATE SERVICE ShowSalesOrderDetail2 TYPE 'HTML' URL PATH ON AUTHORIZATION OFF USER DBA AS CALL ShowSalesOrderDetail( :customer_id, :url ); |
Im folgenden Beispiel werden sowohl der Suchteil als auch ein URL-Pfad verwendet. Der Wert 300 wird url
zugewiesen und der Wert 101 wird customer_id
zugewiesen.
http://localhost:80/demo/ShowSalesOrderDetail2/300?customer_id=101
Dieselbe Anweisung kann auch mithilfe des Suchteils alleine ausgedrückt werden:
http://localhost:80/demo/ShowSalesOrderDetail2/?customer_id=101&url=300
Diese Möglichkeit kann dazu führen, dass einer Variablen mehrere Werte zugewiesen werden. Im folgenden Beispiel wird url
zunächst 300 und dann 302 zugewiesen. In solchen Fällen hat die letzte Zuweisung jeweils Vorrang.
http://localhost:80/demo/ShowSalesOrderDetail2/300?customer_id=101&url=302
Weitere Hinweise zu Variablen finden Sie unter Mit Variablen arbeiten.
Auf Parameter kann auch über die HTTP_VARIABLE-Funktion zugegriffen werden. Weitere Hinweise finden Sie unter HTTP_VARIABLE-Funktion [HTTP].
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |