2016-08-18 90 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. 
    } 
} 
相關問題