2017-05-27 21 views
0

私はDbから顧客のgetBalanceにwebapiを構築しています。これはうまく動作し、データを取得できます。しかし、問題はパラメータの部分にあります。パラメータを持つASP.NET Webapi

たとえば、 ASP.NET Webサービスでは、サービスをリクエストすると、サービスに従って、テキストボックスにパラメータを入力するページが表示されます。

サービスを起動すると、データが取得されます。

私はWEBAPI稼働持ち、URIは---このようになりますhttp://localhost/api/accounts/balance/cs-001

AccountsController

public class AccountsController : ApiController 
{ 

    [HttpGet] 
    [ActionName("balance")] 
    public string Getbalance(string accountNumber) 
    { 
     var data = BusinessLayer.Api.AccountHolderApi.GetBalance(accountNumber); 

     return data; 
    } 

}

ので、私のルート

RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}/{accountNumber}"); 

accountNumberはここのパラメタです。私のモバイルアプリのdevの友人の一つこのAPIを使用するつもりではなく、URLでパラメータ番号を移動することを提案します。私のケースでは、URLにパラメータを追加してdbから残高を取得します。アカウント番号を移動する方法を知りたいparam)をurlからasp.net webapiのパラメータに変更します。

私はwebapiに新しくなっています.Help needed.Thank You。

答えて

2

あなたがしなければならないのは、口座番号がすでに機能上のパラメータであるため、ルートを変更です:

RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}"); 

次にあなたが行うことができるでしょう:

http://localhost/api/accounts/balance?accountNumber=cs-001

+0

うわあ、ありがとうございます。私は小さな質問があります。今、使用したいと思う人に私のAPIを与えてください。形式はhttp:// domain/api/accountsの順でなければなりません/ balance/{param} – OLDMONK

1

@アビトゥスの答えは正しいです。あなたが興味を持っている場合のために、ここでいくつかの嫌悪感があります。

誰かがこのURLを要求した場合:http://localhost/api/accounts/balance?accountNumber=cs-001

ASP.NETルーティングは、あなたのルーティング設定に基づいてコントローラとアクションを把握します。もし

    1. :コントローラとアクションが発見されたら、それはこのようなアクションにパラメータをバインドしようとします:

      デフォルトでは、ウェブAPIは、パラメータをバインドするために、次の規則を使用していますパラメータが「シンプルな」タイプの場合、Web APIはURIから値を取得しようとします。シンプルな型には、.NETプリミティブ型(int、bool、doubleなど)、TimeSpan、DateTime、Guid、decimal、および文字列、および文字列から変換できる型変換器を持つ型が含まれます。複合型の場合、Web APIは、メディア型フォーマッタを使用してメッセージ本文から値を読み取ろうとします。

    ここではfull articleです。

  • +0

    ありがとうございました。 – OLDMONK

    関連する問題