我们可以在url参数中传递null吗?

时间:2016-08-18 09:51:53

标签: asp.net asp.net-web-api

我有一个Asp.Net webApi控制器,如下所示:

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


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

无论如何客户端可以使用id null命中这个API吗?

2 个答案:

答案 0 :(得分:3)

这取决于您在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

答案 1 :(得分:0)

请尝试:

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