C# 如何编写REST服务以支持.net MVC Web API中的多个Get端点?

C# 如何编写REST服务以支持.net MVC Web API中的多个Get端点?,c#,asp.net-web-api,C#,Asp.net Web Api,因此,我熟悉如何编写默认的Get、Post、Put和Delete //GET api/customer public string Get(){} //GET api/customer/id public string Get(int id){} //POST api/customer public void Post([FromBody]string value){} //PUT api/customer/id public void Put(int id, [FromBody]str

因此,我熟悉如何编写默认的Get、Post、Put和Delete

//GET api/customer
public string Get(){}

//GET api/customer/id
public string Get(int id){}

//POST api/customer
 public void Post([FromBody]string value){}

//PUT api/customer/id
public void Put(int id, [FromBody]string value){}

//DELETE api/customer/id
 public void Delete(int id){}
但我如何编写并添加另一个Get端点,而不必创建一个全新的控制器?我想获取客户的元数据?我需要对routeConfig进行任何更改吗?如果是这样,我该怎么做?那么我将如何使用javascript中的新路由呢

//GET api/customer/GetMetaData
 public string GetMetaData(){
 }

您可以使用属性Route。此属性是在WebApi 20中添加的,您可以在方法级别使用它来定义新路由或多个路由,其使用方式类似于
[路由(“Url/route1/route1”)]

使用上面的一个示例,它将如下所示:

//GET api/customer/GetMetaData
[Route("api/customer/GetMetaData")]
public string Get2(){
      //your code goes here
}
如果要在类中声明多个路由,则可以在类级别使用RoutePrefix属性,如
[RoutePrefix(“url”)]
。这将为控制器类中的所有方法设置一个新的基URL

例如:

[RoutePrefix("api2/some")]
public class SomeController : ApiController
{
    // GET api2/some
    [Route("")]
    public IEnumerable<Some> Get() { ... }

    // GET api2/some/5 
    [Route("{id:int}")]
    public Some Get(int id) { ... } 

}
[RoutePrefix(“api2/some”)]
公共类控制器:ApiController
{
//买些api2/一些
[路线(“”)
公共IEnumerable Get(){…}
//获取api2/some/5
[路由(“{id:int}”)]
公共部分获取(int-id){…}
}
注意:在上面的示例中,我展示了一个Route允许我们设置类型约束的示例


谢谢就这样。[路由(“api/customer/GetMetaData”)]。我在谷歌搜索“多个端点”,而我本应该在谷歌上搜索路由属性。