2

PIM (Product Info Manager) と呼ばれるデータ モデルがあり、すべての要求に対して会社の AppId を渡す必要があります。したがって、すべての製品を取得したい場合は、Company AppId とリソース ID を渡します。

RESTエンドポイントをきれいな方法で構造化しようとしていますが、これを思いつきました:

http://api.example.com/pim/44/products/    -- Gets all products in company 44
http://api.example.com/pim/44/products/123 -- Get product 123 in company 123

これはこれを実装する最良の方法ですか?

私はデフォルトのコントローラーを作ることを計画していましたpim/{appId}/{controller}/{id}

これを行うと、MVC ルートで問題が発生しますか? GET メソッドで {appId} トークンにアクセスするにはどうすればよいですか?

4

1 に答える 1

5

説明したとおりにルートを作成して使用できます

routes.MapHttpRoute(
    name: "Default",
    routeTemplate: "pim/{appId}/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

コントローラーには、次のメソッドがあります。

public class ProductsController : ApiController
{
    public Product Get(int appId, int id) { ... }
    public List<Product> Get(int appId) { ... }
}

パラメーター名 (appId、id) はルート パラメーターと一致するため、操作が呼び出されると、ASP.NET Web API は URL 値をパラメーターにバインドする必要があります。

于 2013-05-03T03:39:25.860 に答える