Sdílet prostřednictvím


Použití uložených procedur v Tvůrci rozhraní Data API

Uložené procedury je možné vystavit jako koncové body REST nebo GraphQL v JAZYCE DAB. To je užitečné pro scénáře, které zahrnují vlastní logiku, filtrování, ověření nebo vypočítané výsledky, které nezpracovává jednoduché tabulky nebo zobrazení.

Konfigurace

Zpřístupnění uložené procedury:

  • Nastavte source.type na hodnotu "stored-procedure".
  • Nastavit source.object na plně kvalifikovaný název procedury
  • V případě potřeby definujte volitelné parameters s jejich výchozími nastaveními.
  • Nastavit rest.methods (například , "GET""POST") neborest: false
  • graphql.operation Nastavit "query" na hodnotu nebo "mutation"nebo vynechat výchozí hodnotu"mutation"
  • Udělení oprávnění pomocí "execute" akce

Příklad rozhraní příkazového řádku

dab add GetCowrittenBooksByAuthor \
  --source dbo.stp_get_all_cowritten_books_by_author \
  --source.type "stored-procedure" \
  --source.params "searchType:default-value" \
  --permissions "anonymous:execute" \
  --rest.methods "get" \
  --graphql.operation "query"

Příklad konfigurace

"GetCowrittenBooksByAuthor": {
  "source": {
    "type": "stored-procedure",
    "object": "dbo.stp_get_all_cowritten_books_by_author",
    "parameters": {
      "searchType": "default-value"
    }
  },
  "rest": {
    "methods": [ "GET" ]
  },
  "graphql": {
    "operation": "query"
  },
  "permissions": [
    {
      "role": "anonymous",
      "actions": [ "execute" ]
    }
  ]
}

Podpora REST

  • Podporuje pouze GET a POST
  • Ve výchozím nastavení se použije POST, pokud je methods vynechána.
  • Odešle parametry přes řetězec dotazu s GET.
  • Odesílá parametry prostřednictvím textu JSON pomocí POST
  • Zakáže REST pro uloženou proceduru, pokud "rest": false je nastavená.

Příklady požadavků

GET /api/GetCowrittenBooksByAuthor?author=asimov

POST /api/GetCowrittenBooksByAuthor

{
  "author": "asimov"
}

Podpora GraphQL

  • Vyžaduje graphql.operation , aby byl "query" nebo "mutation"
  • Pole jsou automaticky předvoleny s předponou execute, například executeGetCowrittenBooksByAuthor
  • Parametry se předávají jako argumenty GraphQL.

Příklad GraphQL

query {
  executeGetCowrittenBooksByAuthor(author: "asimov") {
    id
    title
  }
}

Omezení

  • Vrátí se pouze první sada výsledků .
  • Stránkování, filtrování a řazení se nepodporuje.
  • Vztahy nejsou podporovány.
  • Vyžaduje metadata z sys.dm_exec_describe_first_result_set
  • Nelze vrátit jedinou položku podle klíče
  • Bez autorizace na úrovni parametrů