Ric*_* A. 4 c# asp.net api rest asp.net-routing
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
... 等等.这感觉就像是把这个问题撇在了我的身上,如果将这些问题放在一起,那就太遗憾了!
有关如何最好地接近这个的任何想法?
你想要的是MVC Web API中的默认值.我不确定你在看什么,但这是一个很好的例子,将Get/Post/Put/Delete路由到动作.
例如,您可能需要:
public class UsersController : ApiController
{
// GET http://service.url/api/Users/1
[HttpGet]
public User GetUser(int id);
// POST http://service.url/api/Users/?name=richard...
[HttpPost]
public User AddUser(User model);
// PUT http://service.url/api/Users/?id=1&name=Richard...
[HttpPut]
public User UpdateUser(User model);
// DELETE http://service.url/api/Users/1
[HttpDelete]
public User DeleteUser(int id);
}
Run Code Online (Sandbox Code Playgroud)
我已经明确设置了这些,但是GetUser
并且DeleteUser
不需要前缀,因为它们以匹配的HTTP方法开头.
归档时间: |
|
查看次数: |
7483 次 |
最近记录: |