gpt4 book ai didi

c# - "True"REST 路由通过 MVC 4 Web API

转载 作者:太空狗 更新时间:2023-10-30 00:11:16 24 4
gpt4 key购买 nike

TL;DR 摘要:我可以为 HTTP GET、PUT 和 DELETE 配置 MVC Web API 路由吗?

我一直在考虑用私有(private) API 替换我们旧的数据访问层(一个基于 DataSet 和 TableAdapter 的 DLL),以期在成功后创建一个公共(public) API。我已经使用 MVC 4 完成了一些工作来刷新我们的前端,并且喜欢使用它,因此在深入研究基于 WS 或 WCF 的库之前探索“Web API”项目类型似乎是明智的。

初始演示允许我很好地返回 XML/JSON,例如:

//service.url/api/Users

...返回用户列表,而特定用户的详细信息可以通过以下方式访问:

//service.url/api/Users/99

到目前为止,都是 RESTful。但是,为了真正将 URI 映射到资源,我想对上面列出的 URI 执行 HTTP PUT(新用户)或 HTTP DELETE(删除用户)。在我看到的这些项目的所有示例以及 Visual Studio 中提供的脚手架中,都遵循以下约定:

//service.url/api/Users/Create

//service.url/api/Users/Delete/99

//service.url/api/Users/Update/99

...等等。对我来说,这感觉像是在回避这个问题,当所有的东西都放在一起时,这真是一种耻辱!

关于如何最好地解决这个问题有什么想法吗?

最佳答案

您想要的是 MVC Web API 中的默认值。我不确定你在看什么,但这里有一个很好的例子 routing the Get/Post/Put/Delete to actions .

例如你可能想要:

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);
}

我已经明确设置了这些,但是 GetUserDeleteUser 不需要前缀,因为它们是 start with the matching HTTP method .

关于c# - "True"REST 路由通过 MVC 4 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com