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

推荐订阅源

V
Vulnerabilities – Threatpost
雷峰网
雷峰网
GbyAI
GbyAI
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
V
V2EX
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Engineering at Meta
Engineering at Meta
T
Tenable Blog
P
Privacy & Cybersecurity Law Blog
Project Zero
Project Zero
Cloudbric
Cloudbric
Help Net Security
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LINUX DO - 热门话题
J
Java Code Geeks
WordPress大学
WordPress大学
S
Securelist
F
Full Disclosure
N
News and Events Feed by Topic
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
U
Unit 42
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
月光博客
月光博客
Martin Fowler
Martin Fowler
T
Threat Research - Cisco Blogs
小众软件
小众软件
V2EX - 技术
V2EX - 技术
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
The Last Watchdog
The Last Watchdog
D
DataBreaches.Net

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 中带问号太丑了