0

いくつかのモデルを公開するWebAPIプロジェクトを実装しようとしています。ただし、モデルを取得する方法はあまりRESTfulではありません。

1. IDを1つだけ持つのではなく、4つの異なるIDを組み合わせて、サーバー上でストアドプロシージャを実行することにより、モデルデータを設定します。

Dim balance as New BalanceSheet(uid, mid, eid, fid)

上記のスニペットは、、、を使用しuidmid、データベースから正しいレコードを取得します。eidfid

これをコントローラーに実装して/api/Balance?uid=1&mid=2&eid=3&fid=4GetBalance(ByVal uid As Integer, ByVal mid As Integer, ByVal eid As Integer, ByVal fid As Integer)

/api/Balance/FundCredit?uid=1&mid=2&eid=3&fid=42.さらに、 BalanceSheetモデルの特定のメンバーをフィルタリングしたり、前処理されたオブジェクトを次のように返すことができるようにしたいです。 GetFundcredit(ByVal uid As Integer, ByVal mid As Integer, ByVal eid As Integer, ByVal fid As Integer)

4

1 に答える 1

2

この記事に従って解決しました:ASP.NETWebAPIでのRESTとRPC

私は実際に、RPCとRESTという2つの異なるパラダイムを組み合わせようとしていました。私は当初、(間違って)型api/{controller}/{action}/{id}を返す関数にしかマップできないと思っていましたActionResult

これが私のルーティングルールです:

        routes.MapHttpRoute( _
            name:="RPCApi", _
            routeTemplate:="api/{controller}/{action}"
        )

        routes.MapHttpRoute( _
            name:="RESTApi", _
            routeTemplate:="api/{controller}/{id}", _
            defaults:=New With {.id = RouteParameter.Optional} _
        )

どのマップapi/balance/?uid=1&mid=2&eid=3&fid=4api/balance/fundcredit?uid=1&mid=2&eid=3&fid=4これらの2つの関数にそれぞれ:

      Public Function GetBalance(ByVal uid As Integer, ByVal mid As Integer, ByVal eid As Integer, ByVal fid As Integer)
        Try
            Dim balance As New BalanceSheet(uid, mid, eid, fid)

            Return balance
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

    Public Function FundCredit(ByVal uid As Integer, ByVal mid As Integer, ByVal eid As Integer, ByVal fid As Integer)
        Dim balance As New BalanceSheet(uid, mid, eid, fid)

        Return balance.FundCredit
    End Function
于 2012-06-26T06:34:15.317 に答える