我如何写REST服务,以支持多种获取端点.NET MVC的Web API?(How do I wri

2019-10-20 05:00发布

所以我熟悉如何写一个默认的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){}

但是,我怎么会写/再添获取端点W 0不必创建一个全新的控制器? 我要抢客户的元数据? 做我需要做的routeConfig什么变化? 如果是的话我该怎么做? 然后我将如何在JavaScript中使用新的路线?

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

Answer 1:

您可以使用属性路线 。 在20的WebAPI加入这个属性,你可以在方法级别使用它来定义新的路线或多个路线,并且使用它喜欢的方式[Route("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) { ... } 

}

注:在上面的例子中我发现其中路线使我们能够定式的约束,以及一个例子。



文章来源: How do I write REST service to support multiple Get Endpoints in .net MVC Web API?