Prosedur tersimpan di REST API

Prosedur tersimpan dapat diekspos sebagai titik akhir REST di penyusun API Data (DAB). Pendekatan ini berguna untuk skenario yang melibatkan logika kustom, pemfilteran, validasi, atau hasil komputasi yang tidak ditangani oleh tabel atau tampilan sederhana.

Konfigurasi

Untuk mengungkapkan prosedur penyimpanan:

  • Atur source.type ke "stored-procedure"
  • Atur source.object ke nama prosedur yang sepenuhnya memenuhi syarat
  • Tetapkan pilihan parameters dengan nilai default, jika diperlukan
  • Atur rest.methods (misalnya, "GET", "POST") atau rest: false
  • Memberikan izin dengan menggunakan tindakan "execute"

Contoh CLI

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"

Contoh konfigurasi

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

Peringatan

Format kamus untuk parameters (misalnya, { "searchType": "default-value" }) tidak digunakan lagi dalam DAB 2.0. Gunakan format array yang diperlihatkan dalam contoh sebelumnya. Format lama masih didukung untuk kesesuaian ke belakang.

Petunjuk / Saran

Untuk informasi selengkapnya tentang format array parameter, lihat konfigurasi sumber.

Perilaku REST

  • Hanya mendukung GET dan POST
  • Beralih secara default ke POST jika methods dihilangkan
  • Mengirim parameter melalui string kueri dengan GET
  • Mengirim parameter melalui isi JSON dengan POST
  • Menonaktifkan REST untuk prosedur tersimpan jika "rest": false disetel

Contoh permintaan

GET /api/GetCowrittenBooksByAuthor?author=asimov

POST /api/GetCowrittenBooksByAuthor

{
  "author": "asimov"
}

Keterbatasan

  • Hanya tataan hasil pertama yang dikembalikan
  • Penomoran halaman, pemfilteran, dan pengurutan tidak didukung
  • Hubungan tidak didukung
  • Memerlukan metadata dari sys.dm_exec_describe_first_result_set
  • Tidak dapat mengembalikan satu item dengan kunci
  • Tidak ada otorisasi pada tingkat parameter