Aracılığıyla paylaş


Veri API'si oluşturucusunda saklı yordamları kullanma

Saklı yordamlar DAB'de REST veya GraphQL uç noktaları olarak gösterilebilir. Bu, basit tablolar veya görünümler tarafından işlenmeyen özel mantık, filtreleme, doğrulama veya hesaplanan sonuçlar içeren senaryolar için kullanışlıdır.

Konfigürasyon

Saklı yordamı kullanıma açmak için:

  • source.type seçeneğini "stored-procedure" olarak ayarlayın
  • source.object öğesini tam nitelikli yordam adına ayarlayın
  • Gerekirse, varsayılanlarıyla birlikte isteğe bağlı parameters tanımlayın
  • Ayarla rest.methods (örneğin, "GET", "POST") veya rest: false
  • graphql.operation ayarını "query" veya "mutation" olarak yapın ya da varsayılan olarak "mutation"'e bırakın.
  • "execute" eylemini kullanarak izin ver

CLI örneği

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"

Yapılandırma örneği

"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" ]
    }
  ]
}

REST desteği

  • Sadece GET ve POST destekler.
  • POST atlanırsa methods varsayılan olarak kullanılır
  • ile sorgu dizesi aracılığıyla parametreleri gönderir GET
  • Parametreleri JSON gövdesi aracılığıyla gönderir POST
  • Ayarlanmışsa "rest": false saklı yordam için REST'i devre dışı bırakır

Örnek istekler

GET /api/GetCowrittenBooksByAuthor?author=asimov

POST /api/GetCowrittenBooksByAuthor

{
  "author": "asimov"
}

GraphQL desteği

  • graphql.operation olması veya "query" ya da "mutation" gerekir
  • Alanlar execute ön ekiyle otomatik olarak eklenir, örneğin, executeGetCowrittenBooksByAuthor
  • Parametreler GraphQL argümanları olarak geçirilir

Örnek GraphQL

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

Sınırlamalar

  • Yalnızca ilk sonuç kümesi döndürülür
  • Sayfalandırma, filtreleme ve sıralama desteklenmez
  • İlişkiler desteklenmiyor
  • Meta verileri gerektirir: sys.dm_exec_describe_first_result_set
  • Anahtar ile tek bir öğe döndürülemiyor.
  • Parametre düzeyinde yetkilendirme yok