[VB.NET] REST API⑤ GETリクエストの応答をDictionaryにする
GETメソッドの戻り値をDictionaryに変更
デフォルトのGETメソッド を確認してみましょう。
「GetValue」の戻り値はString型になっています。
コード
' GET: api/ApiTest/5
Public Function GetValue(ByVal id As Integer) As String
Return "value"
End Function
コードを以下のように書き換えて、実行してみましょう。
今回は「GET: api/ApiTest/5」の方を書き換えてみます。
「GET: api/ApiTest/5」 は、idを指定した呼び出しに対して結果を返します。
実際の場面ではデータベースやファイルから取得したデータを返すことになると思いますが、
このサンプルではメソッド内でダミーデータを作成して応答しています。
Imports System.Net
Imports System.Web.Http
Namespace Controllers
Public Class ApiTestController
Inherits ApiController
' GET: api/ApiTest
Public Function GetValues() As IEnumerable(Of String)
Return New String() {"value1", "value2"}
End Function
' GET: api/ApiTest/5
Public Function GetValue(ByVal id As Integer) As Dictionary(Of String, String)
Dim rec As New Dictionary(Of String, String)
'IDが 5 の場合、レコードを返す
If (id = 5) Then
rec.Add("col1", id)
rec.Add("col2", "This is a test record.")
rec.Add("col3", New Date(2021, 1, 1))
End If
'レコードをリターン
Return rec
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
実行して確認する
アドレスバーのURLに「/api/ApiTest/5」と追加して、Enterキーを押してAPIを呼び出します。
ブラウザに結果が出力されます。
GETメソッド内で設定したDictionaryの内容がJson形式で出力されています。
2021.09.17追記
このサンプルではブラウザでJson表示したいので、「WebApiConfig.vb」でJsonFormatterに"text/html"を追加しています。 こちらで紹介しています。
今回はGETメソッドの戻り値をディクショナリにしてみました。
結果は、特に何も指定しなくてもJSON形式で取得できます。