ルートを作成しようとしていますが、この場合は機能しません:
私が電話した場合:
http://mysite.com/api/v1/product/Generic/1A
正常に動作します。
私が電話した場合:
http://mysite.com/api/v1/product?=Generic
も動作しますが、私が呼び出すと:
http://mysite.com/api/v1/product/Generic
次のエラーが表示されます。
{
"Message":"The request is invalid.",
"MessageDetail":"The parameters dictionary contains a null entry for parameter 'type'
of non-nullable type 'GType' for method 'System.Net.Http.HttpResponseMessage
Get(GType)' in 'MySite.ControllersApi.V2.ProductController'. An optional parameter must
be a reference type, a nullable type, or be declared as an optional parameter."
}
私のルートのコード:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute
(
name: "DefaultApi",
routeTemplate: "api/{version}/{controller}/{type}/{id}",
defaults: new { id = RouteParameter.Optional, version = "v1", controller = "Product" }
)
}
}
public enum GType
{
Big,
Small,
Generic,
}
そしてコントローラー:
public HttpResponseMessage Get(GType type)
{
...
}
public HttpResponseMessage Get(GType type, string id)
{
...
}
そのため、Web API は URL の値を解析していません。私は何かを忘れましたか?