假设我有一个嵌套的一对多类型的层次结构数据库,如下所示:
一个地区有许多国家 ; 每个国家都有很多城市 ; 一个城市必须属于唯一的一个国家.
将这些信息抽象为RDBMS是一项微不足道的工作,但(在我看来)最合理的REST端点返回给定区域id的国家列表将如下所示:
HTTP GET http://localhost/Region/3/Countries
Run Code Online (Sandbox Code Playgroud)
默认情况下,.NET的Web API的路由会,充其量,http://localhost/Countries/Region/3或http://localhost/Region/Countries/3.
我应该遵循一个合理的命名约定,或者路由是否可以自定义以允许URI采取我喜欢的任何形状?
TL; DR摘要:我可以为HTTP GET,PUT和DELETE配置MVC Web API路由吗?
我一直在寻找用私有API替换旧的数据访问层(基于DataSet和TableAdapter的DLL),以便在成功时创建公共API.我已经完成了MVC 4的一些工作来刷新我的前端,并喜欢使用它,因此在深入研究基于WS或WCF的库之前探索"Web API"项目类型似乎是明智的.
初始演示允许我很好地返回XML/JSON,例如:
//service.url/api/Users
...返回用户列表,而特定用户的详细信息可通过以下方式访问:
//service.url/api/Users/99
到目前为止,如此RESTful.但是,为了真正将URI映射到资源,我想将HTTP PUT(新用户)或HTTP DELETE(删除用户)映射到上面列出的URI.在我为这些项目看到的所有示例中,以及Visual Studio中提供的Scaffolds,遵循以下惯例:
//service.url/api/Users/Create
//service.url/api/Users/Delete/99
//service.url/api/Users/Update/99
... 等等.这感觉就像是把这个问题撇在了我的身上,如果将这些问题放在一起,那就太遗憾了!
有关如何最好地接近这个的任何想法?