webapi中URI和函数定义问题

dongshanyu 2018-07-17 03:36:24
WebApiConfig 使用默认路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

1 资源为book
1.1 获得编号为123456书籍信息
URI:/api/books/123456
函数:Get(string id)
1.2 获得编号为123456书籍的所有评论
URI:/api/books/123456/comments
函数:?
1.3 获得编号为123456书籍的作者信息
URI:/api/books/123456/author
函数:?
2 资源为comment
2.1 获得编号为123的评论
URI:/api/comments/123
函数:Get(string id)
2.1 获得编号为123456书籍的所有评论
URI:/api/comments?bookid=123456
函数:?

想知道上面的1.2/1.3/2.1的URI设置是否合适?对应的函数该如何创建?
...全文
165 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongshanyu 2018-07-17
  • 打赏
  • 举报
回复
To 正怒月神

若使用restful风格,按如下设置是否正确?

1 资源为book
1.1 获得编号为123456书籍信息
URI:/api/books/123456
函数:Get(string id)
1.2 获得编号为123456书籍的所有评论:用2.2替代
URI:/api/books/123456/comments
1.3 获得编号为123456书籍的作者信息:用3.2替代
URI:/api/books/123456/author
2 资源为comment
2.1 获得编号为123的评论
URI:/api/comments/123
函数:Get(string id)
2.2 获得编号为123456书籍的所有评论
URI:/api/comments?bookid=123456
函数:GetCommentsByBookID(string bookid)
3 资源为authors
3.1 获得编号为abc的作者信息
URI:/api/authors/123
函数:Get(string id)
3.2 获得编号为123456书籍的作者信息
URI:/api/authors?bookid=123456
函数:GetAuthorsByBookID(string bookid)

正怒月神 版主 2018-07-17
  • 打赏
  • 举报
回复
使用restful风格,那就遵守他的规则嘛。
URI:/api/books/123456
URI:/api/comments/123
URI:/api/comments?bookid=123456

这三个都可以
dongshanyu 2018-07-17
  • 打赏
  • 举报
回复
上面说错了,是和2.1混淆
dongshanyu 2018-07-17
  • 打赏
  • 举报
回复
引用 1 楼 foren_whb 的回复:
不合适

以1.2为例,下面这样写比较合理:

URI:/api/comments/123456
函数:Get(string id)


1 这样设置是否会和2.2混淆?实际变成"获得编号为123456的评论",而非"获得编号为123456书籍的所有评论"
2 路径中增加版本号的问题,之前网上也有看到有人提过,未将来变更考虑,的确有必要
丰云 2018-07-17
  • 打赏
  • 举报
回复
另外,实际应用中要考虑版本问题,因此,一般都应该在api后面跟一个版本号,比如:

api/v1/books/123
丰云 2018-07-17
  • 打赏
  • 举报
回复
不合适

以1.2为例,下面这样写比较合理:

URI:/api/comments/123456
函数:Get(string id)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧