2016-08-18 211 views
2

我有一个Asp.Net的WebAPI控制器如下:我们可以在url参数中传递null吗?

[RoutePrefix("business/api/v1")] 
public class BusinessController : ApiController 
{ 


    [Route("GetDetails/{id}")] 
    public HttpResponseMessage Get(string id) 
    { 
     // get business details code. 
     } 
    } 

反正是有客户端可以打这个API ID为空?

回答

2

它取决于您在App_Start/WebApiConfig.cs中配置的Web API路由。

如果路线是这样的:

config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "business/api/v1/GetDetails/{id}", 
     defaults: new { id = RouteParameter.Optional } 
); 

然后用户可以达到资源利用http://localhost.business/api/v1/GetDetailshttp://localhost.business/api/v1/GetDetails/1

当您删除defaults: new { id = RouteParameter.Optional }然后用户必须通过一个id否则,它会返回404

+0

没有id参数是不可选的。我现在用的属性路由..如何查看我是否已将其设置为属性路由中的可选属性? –

+0

你想让'id'是否可选?见http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#optional – Marusyk

+0

不..我不希望它作为可选.. –

0

请尝试:

[RoutePrefix("business/api/v1")] 
public class BusinessController : ApiController 
{  
    [Route("GetDetails/{id:int?}")] 
    public HttpResponseMessage Get(int id) 
    { 
     // get business details code. 
    } 
} 
相关问题