[VB.NET] REST API④ GETリクエストの応答をDataSetにする
GETメソッドの戻り値をDataSetに変更
デフォルトのGETメソッド「GetValues()」は以下のようになっています。
コード
' GET: api/ApiTest
Public Function GetValues() As IEnumerable(Of String)
Return New String() {"value1", "value2"}
End Function
コードを以下のように書き換えます。
※この例では、メソッド内でデモ用のDataSetを作成して、結果を返します。
Imports System.Net
Imports System.Web.Http
Namespace Controllers
Public Class ApiTestController
Inherits ApiController
' GET: api/ApiTest
Public Function GetValues() As DataSet
'データテーブルを作成
Dim tbl As New DataTable
tbl.TableName = "TestTable"
tbl.Columns.Add(New DataColumn("col1", GetType(Integer)))
tbl.Columns.Add(New DataColumn("col2", GetType(String)))
tbl.Columns.Add(New DataColumn("col3", GetType(DateTime)))
'データテーブルにテストデータを追加
Dim row As DataRow
'1レコード目
row = tbl.NewRow
row("col1") = 1
row("col2") = "This is a test record."
row("col3") = New Date(2021, 1, 1)
tbl.Rows.Add(row)
'2レコード目
row = tbl.NewRow
row("col1") = 2
row("col2") = "It is an api to get the data of the table."
row("col3") = New Date(2021, 1, 2)
tbl.Rows.Add(row)
'データセットにテーブルを追加
Dim dts As New DataSet
dts.Tables.Add(tbl)
'データセットをリターン
Return dts
End Function
' GET: api/ApiTest/5
Public Function GetValue(ByVal id As Integer) As String
Return "value"
End Function
' POST: api/ApiTest
Public Sub PostValue(<FromBody()> ByVal value As String)
End Sub
' PUT: api/ApiTest/5
Public Sub PutValue(ByVal id As Integer, <FromBody()> ByVal value As String)
End Sub
' DELETE: api/ApiTest/5
Public Sub DeleteValue(ByVal id As Integer)
End Sub
End Class
End Namespace
実行して確認する
ブラウザからGETメソッドを呼び出して確認してみます。
実行方法はこちらで紹介しています。
結果はJSON形式です。
2021.09.17追記
このサンプルではブラウザでJson表示したいので、「WebApiConfig.vb」でJsonFormatterに"text/html"を追加しています。
今回はGETメソッドの戻り値をDataSetにしてみました。
結果はJSON形式で取得できます。