2

我有一个包含两个表的数据库。每个城市与特定国家有关系的国家和城市。

在我的 ASP.Net Web API 中,我可以通过对http://example.com/api/countries的 GET 请求获取国家/地区列表,以运行国家控制器。我可以通过http://example.com/api/countries/1获取有关国家/地区的详细信息。

如果我想要一个国家/地区所有城市的列表,REST 查询 URL 应该是http://example.com/api/countries/1/cities?以及城市的详细信息http://example.com/api/countries/1/cities/1

如何在 ASP.Net Web API 中实现这一点?

4

1 回答 1

3

How about this, in global.asax.cs define an additional api route like so:


routes.MapHttpRoute(
    name: "CityDetail",
    routeTemplate: "api/countries/{countryid}/cities/{cityid}",
    defaults: new { controller = "Cities" }
);

Then define a new CitiesController like so:


public class CitiesController : ApiController
{
    // GET /api/values
    public IEnumerable Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET /api/values/5
    public string Get(int countryId, int cityid)
    {
        return "value";
    }

    // POST /api/values
    public void Post(string value)
    {
    }

    // PUT /api/values/5
    public void Put(int countryId, int cityid, string value)
    {
    }

    // DELETE /api/values/5
    public void Delete(int countryId, int cityid)
    {
    }
}

Needless to say you might want to improve the controller implementation a bit :)

于 2012-05-12T04:27:03.717 回答