如何通过 ID 以外的方式获取 RESTful 资源?

2024-03-21

在某些情况下,我可能需要通过 ID 以外的参数来查找对象。正确的 RESTful 方法是什么?

例如我可能想找到一个User by username and password,所以严格的 RESTful ”GET /users/1“行不通。

根据Rails 文档 http://guides.rubyonrails.org/routing_outside_in.html#_crud_verbs_and_actions这是获取资源所有实例的 URL 模式:“GET /users“。我可以添加参数:”GET /users?username=joe&password=topsecret”,但这会歪曲 GET 请求的官方目的。


“GET /users?username=joe&password=topsecret”,但这会歪曲 GET 请求的正式目的。”

不,它没有歪曲任何东西。这绝对是正确且 RESTful 的方法,也是 http 规范中推荐的检索动态结果的方法。 REST 不关心 URL 中的内容,只关心它是唯一的。该页面的 url 可能是http://3f778a9b8a7c778696e http://3f778a9b8a7c778696e对于所有 REST 架构关心的问题,只要这是到达目标的唯一方法,并且它不会导致其他任何地方。

http 定义了用于返回动态结果的查询字符串协议。考虑到数据库的当前状态,您为应用程序提供的查询字符串应该始终返回相同的结果。然后就会很宁静。 URL 美观与 REST 是完全不同的问题。

根据REST架构,GET请求的规则是它总是返回相同的结果(或者在相当长的时间内保持相同的结果,以便缓存起作用),并且GET没有副作用。 GET 需要是幂等的(始终返回相同的结果,无论调用多少次)并且不会导致系统更改状态。那是it.

当然,您不必使用查询协议。您可以将参数放入正斜杠、分号之间,也可以是 Base64 编码的 GUID。只要遵循这些简单的规则,这完全取决于您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 ID 以外的方式获取 RESTful 资源? 的相关文章

  • 测试驱动开发 - 我应该测试数据库列和索引吗?

    我是 TDD 新手 我发现shouldagem 能够测试数据库实体的列是否存在以及测试其索引 但是否有必要在我的测试套件中包含列和索引的测试 我是否需要担心在开发过程中可能会删除任何列和索引 不要测试数据库列 这只是测试实施 不要测试实现
  • Rails:从视图内渲染视图(不是部分视图)

    我有一个对两者都有响应的控制器html and js The htmlview 渲染整个页面 包括页眉和页脚 而js仅替换 main 除了页眉和页脚之外 两种格式呈现相同的内容 我可以用三个文件获得这种效果 show html erb di
  • 重新归档 simple_form 未定义方法 Attachment_field

    I am trying to hook up refile to my view and I am getting the following error 这是我的模型 class Job lt ActiveRecord Base acts
  • 在 652 毫秒内完成 200 OK(查看次数:50.9 毫秒 | ActiveRecord:18.3 毫秒)

    我试图理解 Rails 日志中的这一行 如果我的视图只花费了 50 9 毫秒 为什么它花费了 652 毫秒 Thanks 如果您在开发环境中运行应用程序 则必须根据每个请求重新加载大量应用程序文件 这就是我对为什么要花这么长时间的猜测 你可
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • HATEOAS 与 PUT/POST 链接

    代表 HATEOAS 链接的最佳方式是什么POST PUT PATCH在资源上 这些操作具有有效负载 但我们无法选择在 HATEOAS 链接中表示有效负载 因为它们不是预先确定的并且可能很重 那么仅仅指定终点并指定操作就足够了吗 对于 HA
  • Rails - 使链接与 ajax 一起工作

    我有一个链接 应该使用 ajax 加载它旁边的部分内容 而无需重新加载页面 链接在这里 这是链接应该转到的控制器 class ProfilesController lt ApplicationController def profile f
  • Devise/CanCanCan - 允许管理员创建新用户

    我正在使用 Rails 4 0 2 设计并康康康 https github com CanCanCommunity cancancan 我正在尝试允许管理员创建新用户 管理员用户在用户表中分配有一个布尔字段 在ability rb中我有以下
  • Rails 中的多列主键

    我正在尝试将桌面应用程序迁移到rails 还处理相当老式的现有数据库 问题是我在一列中没有唯一的 ID 但表的三列保证了记录的唯一性 鉴于我有三个表 authors author name author letter author nr1
  • Mongoid 4 / MongoDB 2.4+“冻结”问题

    自从使用 Mongoid 维护与 mongodb 的连接以来 我遇到了一个奇怪的问题 我认为这最初是由于升级到 Rails 4 0 需要更新 Mongoid Moped 但我在其他基于 Rack 的应用程序 具体来说是 Sinatra 和
  • 如何使用 ActiveAdmin 创建 STI 子类的对象

    给出以下设置 当前不起作用 class Employee lt ActiveRecord Base end class Manager lt Employee end ActiveAdmin register Employee do for
  • 如何在 SoapUI 中测试使用 JWT 的 REST 服务?

    我正在实施一些 REST 服务 我所有的测试都是使用 SoapUI 进行的 最近 我决定采用 JSON Web Token JWT 进行身份验证 但我在 SoapUI 上找不到对此的任何支持 本机安装或插件 什么也没有 我发现了一些在线生成
  • 发送 Microsoft Graph 请求事件返回 400

    我能够通过将 JSON 请求发布到https graph microsoft com v1 0 me calendar events https graph microsoft com v1 0 me calendar events 我已经
  • 使用 prawnto_2 gem 加载图像时,RAILS_ROOT 不再有效

    我正在将我的应用程序从 Rails 3 0 升级到 Rails 3 1 我已经尽可能地将旧插件转为 gems 其中包括用这个漂亮闪亮的新插件替换旧的 prawnto 插件对虾 2 https github com forrest prawn
  • 捆绑包 - 从另一台电脑复制粘贴宝石

    我正在尝试设置 Rails 应用程序 该应用程序依赖于大量的宝石 宝石已预先安装在vendor gems我从朋友那里获得的副本的文件夹 现在 考虑到那些闭源宝石的不可用性 bundle install path home umang pro
  • 新手:我的例子中的文本替换

    In my 红宝石 on Rails应用程序中 我的助手中有一个方法 它通过以下方式打开文件 content File open myfile txt The 文件内容就好像 my car my seat my age my son my
  • Rails 4 - 将地址保存为数据库中的一列

    我是 Rails 新手 正在开发一个简单的应用程序 我的 ERD 中有一个名为 Client 的模型 并且希望保存每个客户的地址 我最初的想法是将地址保存为单独的字段 即 rails g model Client address first
  • 如何对 mongodb/mongoid 脚本进行基准测试,以比较两种不同的查询技术

    您对如何测试两种不同的 mongoid mongodb 查询实现的性能有什么建议吗 要比较的实现与以前的相关 问答 https stackoverflow com questions 10121977 extracting modellin
  • 使用 https 的 Java Jersey RESTful Web 服务

    我是 Java EE 的新手 正在开发一个 RESTful API 其中每个 API 调用用户都会发送编码的凭据 我的问题是如何通过默认的 http 实现 https 协议并确保我的连接安全 我正在使用 Jersey Restful Web
  • 无法使用 docker-compose 在 Dockerfile 中运行 rake db:create

    我有一个Dockerfile and docker compose yml就像在tutorial https docs docker com compose rails 除非我从现有的应用程序开始 My docker compose yml

随机推荐

  • 正则表达式麻烦,转义引号

    基本上 我正在传递一个字符串 我需要以与 nix shell 标记命令行选项大致相同的方式对其进行标记 假设我有以下字符串 Hello World Hello Universe Hi 我怎样才能把它变成一个三元素列表 你好世界 你好宇宙 H
  • magento 产品页面中买家需填写的字段

    我一直在寻找 但找不到类似的东西 我需要创建一个产品页面 买家在将产品添加到购物车之前将在其中填写一些文本字段 大部分类似于此页面的内容 http bitly com Sw4jzR http bitly com Sw4jzR 添加到购物车时
  • 在容器和主机之间共享“node_modules”文件夹

    这是一个非常热门的话题 但我从未真正找到解决方案 您可能知道 当我们在容器中有一个卷并且安装依赖项时 使用npm i或其他东西 从 Dockerfile 具有默认权限 Npm 将创建一个node modules容器中的文件夹root roo
  • 使用多线程 vb.net 时更新文本框

    My code Imports System IO Public Class Form1 Dim thread As System Threading Thread Dim thread2 As System Threading Threa
  • 如何在Python中比较两个时区?

    Example import pytz b pytz timezone Europe Rome c pytz timezone Europe Berlin 然而 这两个时区具有不同的名称但代表相同的事物 b c 返回 false b zon
  • RStudio Run命令运行两次问题[重复]

    这个问题在这里已经有答案了 我在使用 RStudio 时遇到了一个奇怪的问题 当我使用任何命令运行脚本时 例如 Ctrl R Ctrl Enter 或 RStudio 上的实际运行命令 该命令会运行两次 我在互联网上找不到任何与此相关的信息
  • C++、多态性和迭代器

    我想要一个存储接口 抽象类 和一组存储实现 SQLite MySQL Memcached 用于存储已知类的对象并从存储中检索子集 对我来说 清晰的界面是 class Storable int id blah blah blah string
  • JSP/GlassFish:如何正确设置 UTF-8 编码

    我正在寻求帮助 将堆栈中的所有层都转换为 UTF 8 编码 我发现这篇好文章 http www javapractices com topic TopicAction do Id 206 http www javapractices com
  • AWS - 错误 504 - 网关超时 - Flask 应用程序

    昨天 我在 Amazon Elastic Beanstalk 上部署了我的第一个 Flask 应用程序 应用程序正在运行 但当我按下启动抓取过程的按钮时出现问题 这个过程相当长 可能需要大约 3 4 分钟 显然在我按下按钮一分钟后 我收到了
  • 在 Microsoft SQL Server 中从十六进制文字插入 varbinary 值

    我有一个 SpringBoot 应用程序 我使用 jdbcTemplate 将一行插入到 mssql int numOfRowsAffected remoteJdbcTemplate update insert into dbo ELCOR
  • Python - 用 ASCII 字符替换 unicode 表情符号

    我当前的周末项目之一有问题 我正在编写一个 Python 脚本 它从不同来源获取一些数据 然后将所有内容输出到 esc pos 打印机 正如您可能想象的那样 POS 打印机并不完全喜欢表情符号 所以文本如下 可爱 给我这个字符串 u53ef
  • 如何在带有配置文件的 Powershell 脚本中使用自定义 WCF 代理?

    我在它自己的程序集中有一个手写的 WCF 代理 它非常简单 public class MyServiceClient ClientBase
  • 通过shields.io徽章添加SonarQube覆盖范围

    我有 com github xxxxxx xxxxxx Maven 存储库 我想添加盾牌徽章 但我有一个无效徽章 https img shields io sonar https sonarqube com com github norau
  • GMAIL SMTP:对 SSPI 的调用失败异常 - 不支持请求的功能

    我正在使用 gmail smtp 发送邮件 主机 smtp gmail com 端口 587 在 MVC 应用程序中使用 gmail smtp 发送邮件时出现异常 以下代码用于发送邮件 public static int SendMail
  • Three.js 的外观似乎被翻转了

    我这里有一个演示 测试场地 http www myuplay com game test html or Backup http direct myuplay com game test html 由于某种原因 即使鼠标矢量是正确的 我的对
  • R - 检测到非树模型!此功能只能与树模型一起使用

    我是 R 新手 当我尝试跑步时xgb importance 我得到这个 Error in xgb model dt tree feature names feature names text text Non tree model dete
  • 当父溢出更改时,firefox 过渡会中断

    我今天遇到一个问题 花了我很长时间来调试 我在网上找不到解决方案 所以我认为记录下来会很有用 如果父级的 溢出 属性与转换一起更改 则转换似乎在 Firefox 上不起作用 即 parent overflow hidden parent h
  • 在 MVC 4 中将对象转换为 JSON

    我正在使用将对象转换为 JSONJavaScriptSerializer我可以在服务器代码中看到这个 JSON 输出 UserId 1 UserName Admin 但在用户界面中它被转换为如下所示 quot UserId quot 1 q
  • 不能在常量列表中使用变量索引

    使用设备建模语言 DML 1 4 版 我创建了一个列表参数 例如 param X 0 0 0 0 0 1 我想在使用变量的方法中访问它们 例如 method get var uint32 idx gt uint32 return X idx
  • 如何通过 ID 以外的方式获取 RESTful 资源?

    在某些情况下 我可能需要通过 ID 以外的参数来查找对象 正确的 RESTful 方法是什么 例如我可能想找到一个User by username and password 所以严格的 RESTful GET users 1 行不通 根据R