ASP.NET Web APIバインディング方法
-
27-10-2019 - |
質問
このような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番目の方法ではなく、最初の方法が呼び出されたいです。
どうやってやるの ?
解決
ユニークなウリが必要です。ルートを変更してこれを取得できます。
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(Get All)の収集の操作を担当し、ProductControllerはT(特定のものを取得するなど)の操作を担当します。
所属していません StackOverflow