3

このような2つの方法があります

public class ProductController : ApiController
{
    public Product GetProductById(int id)
    {
        var product = ... //get product
        return product;
    }

    public Product GetProduct(int id)
    {
        var product = ... //get product
        return product;
    }
}

URL を呼び出すと: GET http://localhost/api/product/1。2 番目のメソッドではなく、最初のメソッドが呼び出されるようにします。
どうやってやるの ?

4

1 に答える 1

4

一意の URI が必要です。これを取得するためにルートを変更できます。

routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }

);

これで、次のように API にアクセスできます。

http://localhost/api/product/GetProductById/1

http://localhost/api/product/GetProduct/1

ASP.NET Web APIの簡単な紹介を書きました。これは、WCF Web API との違いのいくつかを示しています。

また、デフォルトのアクションを追加することもできます。たとえば、すべての製品をリストするものなど、次のようなことができます。

http://localhost/api/product/  // returns the list without specifying the method

もう1つはこの方法で呼び出されます

http://localhost/api/product/byid/1  // returns the list without specifying the method

私がしているのは、ProductsController と ProductController を用意することです。ProductsController は T のコレクションに対する操作 (すべてを取得) を担当し、ProductController は T に対する操作 (特定のコレクションの取得など) を担当します。

于 2012-02-17T12:29:41.200 に答える