问题标签 [url-design]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
url - 多语言网站 URL 的最佳实践
什么被认为是翻译网站 URL 的最佳策略?我看到经常发生的事情是:
这具有(次要)优势,即用户可以通过修改 URL 手动切换到另一种语言。缺点似乎是对于不是默认语言的每个页面,URL 都包含错误语言的 slug。我认为这会导致 SEO 处罚。
另一种方法是翻译 slugs 并选择性地省略语言标识符:
有些语言并不真正让自己变得“呆滞”,例如俄语、汉语和阿拉伯语。你最终会得到毫无意义的音译。
rest - 针对未经身份验证的请求的 RESTful URL 设计
我想提供重置用户密码的功能。这个调用显然不需要认证。首先我想到了这样的事情:
DELETE /users/{id}/password
:生成一个重置令牌,通过电子邮件发送给用户
POST /users/{id}/password
:需要新密码和正文中的有效重置令牌
但问题是,应用程序或网站无法向我提供用户的 ID,因为它只能要求用户提供他的电子邮件地址。
对我们的 API 有许多其他(未经身份验证的)调用,其中 ID 不存在,用户仅通过其电子邮件识别。
我们在团队中讨论了以下解决方案:
- 将 URL 中的 ID 替换为用户的电子邮件
- 从 URL 中剪下 ID,并为电子邮件提供查询参数
如果我必须在这两者之间进行选择,我会选择第一个,因为我认为为查询参数提供必要的东西不是 RESTful,因为它们总是代表一些可选的东西,比如过滤资源。是否有更好的方法来设计这些 URL,或者在 REST 约束方面用用户电子邮件替换 ID 就好了?
web-services - REST - 获取更新的资源
我从事一项从博客中抓取特定链接的服务。该服务调用不同的站点,这些站点提取并存储数据。
我在指定用于更新服务器上数据的 url 时遇到了麻烦,我现在使用动词 update 来拉入最新的链接。
我目前使用以下端点:
第二个网址有什么好的选择?我自己想出了一些例子。
url - URL 设计:在用户提交的项目的 URL 中使用连续编号是不好的做法吗?
我正在一个用户可以提交项目(在本例中为提案)的网站上工作。最简单的 URL 设计可能是website.com/proposal/1
,website.com/proposal/2
等(可能附加了一个 slug),但我在实践中从未见过这样做。
这种 URL 设计真的像我想的那样罕见吗?如果是,为什么?
rest - RESTful url - 获取新的子实体
有两种模型:实体和子实体。实体可以有许多连接的子实体(一:多关系)。
服务器上有一个返回新子实体的方法(我们称之为GetEmptySubentity)。重点是,当您想创建新的子实体时,您按下一个按钮,模型来自服务器,并预先填充了一些字段。其中一些子实体预填充的值取决于相应的实体,因此我需要在此请求中传递一个实体 ID。
那么获取空子实体的正确 url 应该像/Entity/{id}/Subentity/empty吗?或者我有什么问题?
url-rewriting - 在 URL 中的何处添加 ID?
我正在使用友好的 URL,如下所示:
在友好 URL 上,我需要添加照片的 ID,但环顾四周,我看到了将 ID 添加到友好 URL 的两种方法,pre 和 post,就像这样
或者
使用一种方式有优势吗?或者这只是一个偏好/个人品味的问题?
rest - 在url中传递rest资源输出格式
AFAIK 每个资源在 REST 设计中都有一个 url。例如/user/28
id 为 28 的用户的 url,/users
将返回所有用户。
有一些方法可以表示资源的输出格式:
- 传递查询参数,如
format
- 使用扩展名指定它(更改
/users
url 以/users.json
获取 json 格式的用户) Accept
通过设置http 标头指定请求的格式(xml、json、xls、...) 。
我在网上搜索,似乎正确的方法是设置Accept
标题。但是如果你想有一个http链接(由href指定)下载xls格式的用户列表,你不能!另外如果你想通过浏览器下载xls,你会遇到很多问题(你应该使用ajax所以xls应该使用ajax等下载)
如果是最好的方法,下载链接的解决方案是什么,如果不是,哪个解决方案更好?
url - URL 格式 - 对象之前或之后的操作?
我正在构建一个 Web 应用程序,但遇到了一个问题。在办公室,我们意见不一,所以我认为分享这个问题并听取最好的(你!)
在为应用程序创建 URL 时,我正在考虑使用标准格式:
对于 Clients 模块的索引,它将是:
然后,对于客户的详细信息页面,它将是:
最后,对于客户端的更新页面,它将是:
问题来了:
更改更新页面 URL 中参数的顺序怎么样?它看起来像这样:
(始终将参数保留在[client_slug]
URL 的末尾。)
对我来说这更有意义,因为 URL 将始终遵循“域/模块/函数/对象”的格式,但对于这里的某些人来说,它没有。
你们怎么看?任何 SEO 影响还是只是个人选择?
api - 当存在默认值时,REST 过滤器中“匹配所有”的正确查询参数是什么?
如果一个 REST API 端点得到所有,那么过滤器就很容易了。缺少过滤器意味着“获得所有结果”。
但是如果有默认值,那么我需要一些方法来明确不设置默认过滤器。继续上面的例子,如果每个人都有一个state
,“已批准”或“待定”,并且如果我的系统设置为如果我没有明确指定状态,它将返回所有“已批准”:
我如何获得所有人?如果有 10 个可能的状态怎么办?还是100?
我可以想到几个方法:
GET /persons?state=any
- 但是我永远无法使用实际状态any
GET /persons?state=*
- 会工作,但感觉很奇怪?或者是吗?GET /persons?state=
- 一些 URL 解析库会抱怨一个空白的查询参数,这是否意味着“状态为空”而不是“状态是什么”?
我如何在我的 GET 中说“将状态的默认值覆盖为任何内容”?