[VB.NET] REST API⑤ GETリクエストの応答をDictionaryにする

2021年10月7日

コントローラーのGETメソッドを変更し、応答をDictionaryにしてみましょう。
※ VisualStudio2019
APIプロジェクトの作成方法 についてはこちらで紹介していますので参照してください。
このサンプルでは、以前作成した「ApiTestController」というコントローラーを使用しています。
コントローラーの追加方法はこちらで紹介していますので参照してください。

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形式で取得できます。

GETASP.NET,REST API,VB.NET

Posted by itblogks