问题标签 [restful-architecture]

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.

0 投票
5 回答
16972 浏览

validation - 通过 REST API 验证/更改密码

我想通过 REST API 更改用户密码。这不是忘记或重置密码功能,而是登录用户想要更改密码。

该表单需要当前密码、新密码和对新密码的确认。但是,我想在用户填写时验证每个表单字段。newPassword这对于and (客户端)来说是微不足道的confirmNewPassword,但对于currentPassword. 当前通过 对用户对象执行更新PUT /users/:id。如果传递了密码参数,我会检查currentPassword参数并确保在保存之前它是正确的。但是,为了验证,我不确定最好的方法。

我也有一个POST /users/validate- 不确定这是否是最好的。这将验证 User 对象的创建和更新,但仅验证属于 User 对象 ( email, username, password) 的字段。currentPassword不是其中之一。想知道如何处理这个问题。我考虑过的一些事情:

POST /users/check_password, POST /users/validate(如果传递了该参数,则添加对 currentPassword 的验证,并检查 currentPassword 是否与用户现有密码匹配)和 POST /users/:id/validate(对现有用户的单独验证,要求currentPassword)。

任何想法或建议将不胜感激。我的第一个仅通过 REST API 公开功能的应用程序。

0 投票
2 回答
3507 浏览

web-services - 触发服务器端事件的 RESTful 方式

我有一种情况,我需要我的 API 调用以触发服务端事件,客户端不需要任何信息(除了身份验证),服务器也不需要返回任何信息。由于这不适合标准的 CRUD/资源交互,我应该将其视为我做错了什么的指标,还是有 RESTful 设计模式来处理这些情况?

0 投票
1 回答
98 浏览

ruby-on-rails-3 - Rails 3.1 Web 服务的数据类型未正确传递

我有一个 Rails RESTful Web 服务应用程序,它接受来自客户端的值来增加数据库中的值。数据库值是一个整数,但是当使用 rspec 测试代码时,传入的值被解释为一个字符串。

我正在使用 Rails 3.1 和 Ruby 1.9.2。

这是 rspec 片段:

这是控制器代码:

xp、sp 和 cash 是来自数据库的值,并且已被验证为 Fixnum 数据类型。我得到的错误是:

如何编写测试以确保传递的参数作为正确的数据类型传递?

如果需要,我可以包含更多代码。提前致谢!

0 投票
2 回答
4208 浏览

api - 关于使用 OAuth 使用您自己的 API 的问题

我正在为我正在处理的项目构建一个 RESTful API,我想让主应用程序使用该 API,因为:

  1. 这将导致需要维护一组代码
  2. 如果我们决定为 3rd 方开发人员公开 API,那么它已经完成了
  3. 它开辟了制作使用它的移动应用程序的可能性
  4. 我真的很想学习如何去做

API 将托管在子域中https://api.example.com,而主 Web 应用程序将托管在根域中https://example.com

从概念上讲,我了解一切是如何工作的,但我的主要问题是身份验证流程将如何改变。通常,第 3 方应用程序会:

  1. 获取请求令牌https://api.example.com/request_token
  2. 重定向用户以进行身份​​验证https://api.authenticate.com/authorize
  3. 被重定向回第 3 方应用程序
  4. 从以下位置获取访问令牌https://api.example.com/access_token

由于我控制这两个域,我可以做类似的事情:

  1. 当用户登陆登录屏幕时获取请求令牌https://www.example.com
  2. https://www.example.com用户使用调用相同代码的表单进行身份验证https://api.example.com/authorize
  3. 如果凭据有效,则将请求令牌交换为访问令牌
  4. 访问令牌保存在会话中,并在用户像往常一样注销时过期

第 3 步感觉是错误的,因为会有重复的代码,但它不会让我受到 XSS 攻击吗?是https://www.example.com发送数据的登录表单,https://api.example.com因为它们在技术上是不同的域?

我是否过于复杂了?

0 投票
1 回答
332 浏览

rest - 是否有任何不使用 HTTP 的 RESTful 框架?

好的,所以表示状态转移

最初是在 HTTP 的上下文中描述的,但不限于该协议。

REST -与 RPC 对比- 遵循与“传统” RPC 机制略有不同的概念。有些人认为使用 REST 处理通信的方式比使用 RPC“更好”。

现在,我感兴趣的是,实际上是否有任何工作框架是 RESTful,但不依赖 HTTP 作为底层传输机制。

0 投票
2 回答
2937 浏览

android - 带有桌面、android 和 ios 客户端的 java-ee 应用程序

我正在用 java 企业和 glassfish 构建一个应用程序。客户端和服务器之间的信息通常是少量数据,但有时客户端需要获取更大的资源(通常为 1-20 MB)。我还在规划系统的架构,我需要一些关于如何将服务器上的资源暴露给多个客户端的建议。

最初我只打算在 javaws 和 glassfish 提供的 ACC 中运行一个桌面客户端应用程序。我将远程接口放在一个单独的 jar 中,并计划通过调用通过这些接口公开的 EJB 方法来完成所有客户端服务器接口。对于 java 桌面客户端来说,这一切都很好。对于 android 客户端来说,它甚至应该很容易。但我认为这对 ios 来说不会那么容易。

有什么方法可以从在 iphone 或 ipad 中运行的 Objective-c 调用我的 EJB?我当然希望如此。

我预计该解决方案是一个 RESTful Web 服务。据我了解,这是一种通过以通用 XML 或 JSON 形式传递数据来松散耦合客户端和服务器应用程序的方法。

抱歉,如果我遗漏了一些非常明显的东西,但似乎从这里有两条路线:

  1. 保留我的 EJB 业务接口并为通用客户端(iOS 和以后可能出现的其他任何东西)实现一个重复的 restful 接口。

  2. 为所有客户端创建一个宁静的界面。

2 号似乎是一个更简洁的设计,但这意味着我必须放弃已经完成的工作并学习休息。有更多经验的人可以提供一些建议吗?我会非常感激。

0 投票
1 回答
992 浏览

spring - 会话共享集群环境中 Restful Web 服务中的用户会话管理

我正在尝试使用 Spring-JPA 后端和 Restful Web 服务设置控制服务器应用程序以公开后端方法。我的用户会话和身份验证/授权必须通过后端控制服务器处理。必须在具有用户会话复制的集群环境中设置整个应用程序。

我无法弄清楚使用哪种机制来存储会话,因为 Restful Web 服务是无状态的。我将为每个用户会话生成一个唯一的会话令牌,并将会话令牌和用户属性映射存储为键值对。

  • 我不能使用静态 Maps 和 ServletContext 来存储用户会话,因为会话复制是不可能的。

  • 一种替代方法是将用户会话存储在数据库中。

如果有任何其他方式可以做到这一点,请建议我。

谢谢,哈里

0 投票
1 回答
44 浏览

apache - 结合旧站点和新站点结构

我想实现以下内容:

  • 新的站点结构,基于新的目录路径、新的 PHP 框架、DB 结构等。该站点应可通过http://www.mysite.com 访问
  • 旧结构中的某些页面应该可以继续工作。旧站点结构应该可用并保留在其旧文件夹中,例如/var/www/myoldsite
  • 一般来说,当我调用特定页面时,比如http://www.mysite.com/specificpage.php,应该调用旧站点,否则只能访问新站点的页面。

我应该如何设计?在apache的虚拟主机中?还是在.htaccess文件中?

0 投票
1 回答
62 浏览

rest - 这个 REST API 的参数值应该在哪里?为什么?

我有以下 REST API:

假设该 API 通知用户列表,用户 Martin 有话要说。要通知的用户列表可以从 1 到 1000 不等。一千个用户的列表应该在哪里:查询字符串、HTTP 标头或请求正文?为什么?

0 投票
1 回答
2775 浏览

html - 带有来自 base64_encode 的 src 的视频标签 html5 在不同的设备和浏览器上不起作用

我试试这段代码。

当我在笔记本(safari、firefox)上玩时它可以工作,但当我在 IPAD2(safari)或三星 Galaxy(Opera)上玩时它就不行。我认为问题出在

因为当我替换为

它适用于所有设备和浏览器。我必须使用base64_encode(trim(file_get_contents('kecak.mp4')))因为在我的实际情况下,它来自 RESTFul 对通过 http 传送视频的响应。来自 http 的字符串响应与 base64_encode(trim(file_get_contents('kecak.mp4'))) 相同。谢谢你的帮助:-)