如何在WEB API中为ID设置没有问号的API URL

时间:2016-09-30 14:58:21

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

我试图通过WEB Api获取所有数据和单个数据。当我获得单个数据时,我必须放置"问号"但是在网址中我并不想要它。我怎么能避免这样做。

我想完全删除?C_ID = part; http://localhost:xxxx/api/Candidates/?C_ID=1

我希望有一个这样的网址来获得单个候选人 http://localhost:xxxx/api/Candidates/1

 namespace JobPortalX2_Server
{
    public static class WebApiConfig
    {

        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            //CORS
            config.EnableCors();

            config.Routes.MapHttpRoute(
                name: "GetCandidatesRoute",
                routeTemplate: "api/{controller}"
            );

            config.Routes.MapHttpRoute(
                name: "GetCandidateRoute",
                routeTemplate: "api/{controller}/{id}"
            );

        }
    }
}

1 个答案:

答案 0 :(得分:2)

你已经拥有它;第二条路线将照顾它。或者您可以使用以下默认路线替换两个路线 -

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

如果您使用Web API 2并希望使用 C_ID 作为参数名称,则可以使用 RouteAttribute

[RoutePrefix("api/candidates")]
public class CandidatesController : ApiController
{
   [HttpGet]
   [Route("{c_id:int}")]
   public async Task<IHttpActionResult> Get(int c_id) 
   {
      ...
   }
}