Freigeben über


Gespeicherte Prozeduren in der REST-API

Gespeicherte Prozeduren können als REST-Endpunkte im Daten-API-Generator (DAB) verfügbar gemacht werden. Dieser Ansatz ist nützlich für Szenarien, die benutzerdefinierte Logik, Filterung, Überprüfung oder berechnete Ergebnisse umfassen, die nicht von einfachen Tabellen oder Ansichten behandelt werden.

Konfiguration

So machen Sie eine gespeicherte Prozedur verfügbar:

  • Legen Sie source.type auf "stored-procedure" fest.
  • Setzen Sie source.object auf den vollqualifizierten Prozedurnamen
  • Optionale parameters mit ihren Standardwerten definieren, falls erforderlich.
  • Legen Sie rest.methods fest (z. B. "GET", "POST") oder rest: false
  • Erteilen von Berechtigungen mithilfe der "execute" Aktion

CLI-Beispiel

dab add GetCowrittenBooksByAuthor \
  --source dbo.stp_get_all_cowritten_books_by_author \
  --source.type "stored-procedure" \
  --parameters.name "searchType" \
  --parameters.required "false" \
  --parameters.default "default-value" \
  --parameters.description "The type of search to perform" \
  --permissions "anonymous:execute" \
  --rest.methods "get"

Konfigurationsbeispiel

"GetCowrittenBooksByAuthor": {
  "source": {
    "type": "stored-procedure",
    "object": "dbo.stp_get_all_cowritten_books_by_author",
    "parameters": [
      {
        "name": "searchType",
        "required": false,
        "default": "default-value",
        "description": "The type of search to perform"
      }
    ]
  },
  "rest": {
    "methods": [ "GET" ]
  },
  "permissions": [
    {
      "role": "anonymous",
      "actions": [ "execute" ]
    }
  ]
}

Warnung

Das Wörterbuchformat für parameters (z. B. { "searchType": "default-value" }) ist in DAB 2.0 veraltet. Verwenden Sie das im vorherigen Beispiel gezeigte Arrayformat. Das alte Format wird weiterhin aus Gründen der Abwärtskompatibilität akzeptiert.

Tipp

Weitere Informationen zum Parameterarrayformat finden Sie in der Quellkonfiguration.

REST-Verhalten

  • Unterstützt nur GET und POST
  • Standardwert: POST, wenn methods nicht angegeben wird
  • Sendet Parameter über abfragezeichenfolge mit GET
  • Sendet Parameter über JSON-Textkörper mit POST
  • Deaktiviert REST für eine gespeicherte Prozedur, wenn "rest": false gesetzt ist.

Beispielanforderungen

GET /api/GetCowrittenBooksByAuthor?author=asimov

POST /api/GetCowrittenBooksByAuthor

{
  "author": "asimov"
}

Einschränkungen

  • Es wird nur die erste Ergebnismenge zurückgegeben.
  • Paginierung, Filterung und Sortierung werden nicht unterstützt.
  • Beziehungen werden nicht unterstützt
  • Erfordert Metadaten von sys.dm_exec_describe_first_result_set
  • Ein einzelnes Element kann nicht nach Schlüssel zurückgegeben werden.
  • Keine Autorisierung auf Parameterebene