惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Secure Thoughts
C
Cyber Attacks, Cyber Crime and Cyber Security
SecWiki News
SecWiki News
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
H
Help Net Security
I
InfoQ
T
Tor Project blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
S
Schneier on Security
The Hacker News
The Hacker News
博客园 - Franky
雷峰网
雷峰网
S
Security @ Cisco Blogs
Google Online Security Blog
Google Online Security Blog
Engineering at Meta
Engineering at Meta
G
GRAHAM CLULEY
Security Latest
Security Latest
The Cloudflare Blog
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
K
Kaspersky official blog
C
Cisco Blogs
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
A
Arctic Wolf
Latest news
Latest news
Last Week in AI
Last Week in AI
The Register - Security
The Register - Security
Google DeepMind News
Google DeepMind News
博客园 - 聂微东
T
Threatpost
G
Google Developers Blog
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
aimingoo的专栏
aimingoo的专栏
S
Securelist
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
T
The Exploit Database - CXSecurity.com
月光博客
月光博客
Recent Announcements
Recent Announcements

Ruby on Rails

以后发软件库是不是只用发 spec? - V2EX OpenCode + GLM-4.7 还是弟弟, Antigravity + Gemini 3 Pro 还是强不少,不写一行代码转译了一个 Gem: rb-edge-tts - V2EX Ruby on Rails 用着太舒服了 - V2EX 手把手教您在 Baklib 上搭建一个模板网站 - V2EX 我回来了, Ruby on Rails - V2EX Ruby on Rails 国内使用情况 - V2EX 推荐一个 Admin Panel - V2EX 当我更换 mac m2 芯片 无法使用使用 mysql2 报错 symbol not found in flat namespace (_mysql_affected_rows) - V2EX 后端收到两次重复 api 请求,如何判断第二次是重复的? - V2EX Rails 7 发布 - V2EX 大家写 ruby on rails applications 的时候一般怎么写前端页面? - V2EX 如何动态显示和保存一系列输入框中的内容 - V2EX ruby on rails: no implicit conversion of nil into String - V2EX Rails 现在国内是不是有点凉了? - V2EX Rails 6.1 升级记录 - V2EX 使用 Vue 前端、Rails 后端实现图片上传的功能 - V2EX 写了个在线约会的日历,已经部署在公有云上了,正文有访问链接 - V2EX Ruby, Rails 不值一学 - V2EX Rails new 命令一直转圈怎么办? 大家都用什么来部署 ROR 的? - V2EX ruby on rails 做 web 开发,效率真是杠杠的啊 - V2EX 如果有一天 DHH 没有再维护 ror 了怎么办? - V2EX Ruby on Rails 怎么样? - V2EX 世界无人帆船锦标赛,招募两名 Ruby 志愿者的参与 正在看 restful rail development 这本书,按照书上写的测试报错了,大佬帮我看看 - V2EX spree 电商框架怎么样 - V2EX 送几本《Rails 5 敏捷开发》 - V2EX Rails 布署最佳实践 Rails Seed Migration 问题 - V2EX 心好累 ruby 发一个 OAuth1.0 的请求怎么这么难 - V2EX Ruby on Rails 的工程怎么做 heap dump? - V2EX 为什么是 Ruby on Rails?而不是 Rails on Ruby? - V2EX Turbolinks 会导致微信网页在 iOS 上点击链接时出现 invalid signature 错误, Android 和开发者工具则正常 - V2EX ruby on rails 如何上传 swf 文件 - V2EX 球写一段及其简单的 Ruby 代码 - V2EX 初学者请教一个 ruby 使用 leveldb 的问题 - V2EX Rails 本地开发,访问网站巨慢,你们都是怎么解决的? - V2EX ruby 中使用类变量是 bad code style 吗?有没有替代品? - V2EX jenkins 执行 ruby -v 和在 slave 上执行 ruby -v 版本不一致 - V2EX Tower,Worktile,Teambition 在低层存储上的差别是什么? - V2EX 良心之作,全站工程师的独白 [视频] - V2EX 有没有人用个人电脑+花生壳+RoR,在家搭建一个自己的服务器? - V2EX 之前已经可以写一些简单的东西了,现在发现都忘完了,有没有类似经历的同学?怎么破? - V2EX 视频推荐:使用 Rails 5 开发一款 Ruby on Rails app - V2EX Ruby on Rails 教程(原书第 4 版)发布 - V2EX 一个美女程序员开发的 Rails App - V2EX 需要长期运营的项目,千万别用 rails - V2EX Rails 出 5.0 了 - V2EX ruby 如何做 race conditions 测试? - V2EX
RESTful API 设计问题(很基础) - V2EX
starvedcat · 2016-11-21 · via Ruby on Rails

这是一个创建于 3493 天前的主题,其中的信息可能已经有所发展或是发生改变。

我现在有

resources :books

现在我想要设计 API ,显示同一个作者写的所有书

假设, ID 为 1 的书,作者是 A ,这本书的 URI 是

/books/1

那么这个“ A 写的所有书”的 URI 应该怎么设计呢?

这个“作者”就是一个字符串,不是一个 model

是不是这样:(用 similar 表示同一个作者)

/books/1/similar

但是这样的话,又没有体现出 A 的名字

第 1 条附言  ·  2016 年 11 月 22 日

我后来是这样做的:

/authors/A/all_books
/authors/A/all_books?from=1 (这样就可以在页面上添加一个返回那本书的按钮)
lslqtz

1

lslqtz      2016 年 11 月 21 日

/author/a/allbooks

kitalphaj

2

kitalphaj      2016 年 11 月 21 日

楼上的就可以,不过还是建议把作者也作为一个 model 。

starvedcat

3

starvedcat      2016 年 11 月 21 日

@lslqtz
@kitalphaj
多谢两位,其实我的疑问就是,在 author 不是 model 的情况下,把 author 作为 URI 的一部分合不合适?(现在看来是合适的?)

csunny

4

csunny      2016 年 11 月 21 日

我以为, author 是不是 model 只是内部实现的问题,对外仍然可以作为 uri 一部分。不知道对不对。

maemual

5

maemual      2016 年 11 月 21 日 via iPhone

author 是不是 model 是内部实现的问题,和接口设计没有关系。

hanks315

6

hanks315      2016 年 11 月 21 日 via iPhone

/books?author=A ,这样可以么

xia0ta0

7

xia0ta0      2016 年 11 月 21 日

/authors/:author/books 或者 /books?author=:author 都可以的

tabris17

8

tabris17      2016 年 11 月 21 日

你就想象一下,如果这些书按照文件夹排列你会怎么放置

/books/sorted-by-author/{author_id}

msg7086

9

msg7086      2016 年 11 月 21 日

虽然 author 只是内部实现,但是 Rails 会要求你按照建模要求去建模。 Author 老老实实开一个 model 出来搞,然后什么都简单了。

这就是 CoC 的世界。

lijinma

10

lijinma      2016 年 11 月 21 日

一般两种方式:

1. /authors/:author_id/books
2. /books?author_id=:author_id

参数都应该是 author_id 才对啊。另外, Model 肯定要建的,如果没有 model , author_name 只是 book 的一个属性,那么你应该这么做:

/books?author_name=:author_name

timestamp

11

timestamp      2016 年 11 月 21 日

book/{id}
author/{id}
author/{author}/books

lxrmido

12

lxrmido      2016 年 11 月 21 日

其实,要体现作者的名字的话,参考暴雪的做法就行了:

author#233

hustlike

14

hustlike      2016 年 11 月 21 日

books/author/{author_id}

wizardoz

15

wizardoz      2016 年 11 月 21 日

/books/?author=A

restful 并不是完全抛弃查询参数.从所有书的列表中过滤作者为 A 的所有书.用查询参数过滤我觉得没毛病.
毕竟层次结构的 URL 只是一个一维的东西,要用来表示现实世界错综复杂的关系还是有困难.

bravecarrot

16

bravecarrot      2016 年 11 月 21 日 via iPhone

觉得 11 楼的比较好,把 book 和 author 建成不同的 model ,更容易理解。
/books/1/similar 这样很不合情理
另外,一直觉得 url 中带问号太丑了