Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere-Webdienste

 

Wie URLs interpretiert werden

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.

Benutzer und Kennwort

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.

Host und Port

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.

Datenbankname

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.

Dienstname

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.

Parameter

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.

URL-Pfad

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: [external link] 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 url1url2, 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).

[external link] 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].

URL-Suchteil

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: [external link] 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.

[external link] http://localhost:80/demo/ShowSalesOrderDetail2/300?customer_id=101

Dieselbe Anweisung kann auch mithilfe des Suchteils alleine ausgedrückt werden:

[external link] 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.

[external link] 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].