asp.net-web-api - 如何为WEB API中的ID设置不带问号的API URL

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

我正在尝试通过WEB Api获取所有数据和单个数据。当我获得单个数据时,我必须在 URL 中添加“问号”,但我不想要它。我怎样才能避免这样做。

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

我想要一个像这样的 URL 来获取单个候选人 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}"
            );

        }
    }
}

最佳答案

你已经拥有了;第二条路线会处理它。或者您可以将两条路由替换为以下默认路由 -

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) 
   {
      ...
   }
}

关于asp.net-web-api - 如何为WEB API中的ID设置不带问号的API URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39794474/

相关文章:

asp.net - 仅 Web API v2 项目的 HttpContext.Current.User null

c# - 允许 ASP.Net Core WEB API 中的参数名称为 "["

asp.net-web-api - Web Api Core 2 区分 GET

c# - 405 方法不允许 - ASP.NET Web API

c# - 如何在 Web API 中支持空 RouteAttribute?

c# - Azure 自动构建失败

c# - 在新选项卡中打开生成的 pdf 文件而不是下载..Web API

c# - 使用 Owin.Testing 时获取远程 ip

java - Play Framework 停留在同一页面然后更改语言

ruby-on-rails-3 - ruby on Rails route 带有两个词 Controller 名称的问题