3

Web API を使用して最初の REST サービスを作成し、Web フォーム asp.net プロジェクトのポストバックの一部を置き換えようとしています。Web フォーム プロジェクトでは、新しい Web ページを参照すると、常に ASP.net アプリケーション変数と、接続するデータベースを決定するのに役立つクエリ文字列値を取得します。この古いアプリでは、すべてが同じスキーマとデータベース オブジェクトを持ついくつかの異なるデータベースに接続しますが、データはデータベースごとに異なります

これらの変数を REST サービスに渡す最善の方法、またはそれらをルートまたは他の方法の一部にする必要があるかどうかはわかりません。

したがって、以下のような REST メソッドで

    // GET api/<controller>/5
    public string GetCategoryByID(int id)
    {
        return "value";
    }

カテゴリ ID を取得してデータベース レイヤーに渡すことができますが、上記の 2 つの変数も必要です。適切なデータベースにアクセスするには、REST API を呼び出すたびにこれらの変数を取得する必要があります。次のようなものを使用する必要があります。

    // GET api/<controller>/5
    public string GetCategoryByID(int id, string applicationEnvironment, string organization)
    {
        return "value";
    }

または、次のようなルートの一部にする必要があります。

api/{appEnvironment}/{組織}/{コントローラー}/{id}

これは単純な問題のように思えますが、解決策を見つけるのに苦労しています。

4

4 に答える 4

3

httpget 呼び出しで追加のパラメーターを渡すことになりました。追加のフィードバックがない限り、おそらくこのパターンに従います。

    [HttpGet]
    public Company[] GetProgramCompanies(int id, [FromUri] string org, [FromUri] string appEnvir)
    {
        DataLayer dataAccess = new DataLayer(Utilities.GetConnectionString(org, appEnvir));
        IEnumerable<BudgetProgramCompanyListing> companies = dataAccess.GetProgramCompaniesListing(id).OrderBy(o => o.Company_Name);

        Company[] returnComps = new Company[companies.Count()];
        int count = 0;

        foreach (BudgetProgramCompanyListing bpc in companies)
        {
            returnComps[count] = new Company
            {
                id = bpc.Company_ID,
                name = bpc.Company_Name
            };
            count++;
        }

        return returnComps;
    }

この URL で上記のサービスを呼び出します。

api/programcompanies/6?org=SDSRT&appEnvir=GGGQWRT

于 2013-08-14T22:08:54.997 に答える