问题标签 [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.
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 公开功能的应用程序。
web-services - 触发服务器端事件的 RESTful 方式
我有一种情况,我需要我的 API 调用以触发服务端事件,客户端不需要任何信息(除了身份验证),服务器也不需要返回任何信息。由于这不适合标准的 CRUD/资源交互,我应该将其视为我做错了什么的指标,还是有 RESTful 设计模式来处理这些情况?
ruby-on-rails-3 - Rails 3.1 Web 服务的数据类型未正确传递
我有一个 Rails RESTful Web 服务应用程序,它接受来自客户端的值来增加数据库中的值。数据库值是一个整数,但是当使用 rspec 测试代码时,传入的值被解释为一个字符串。
我正在使用 Rails 3.1 和 Ruby 1.9.2。
这是 rspec 片段:
这是控制器代码:
xp、sp 和 cash 是来自数据库的值,并且已被验证为 Fixnum 数据类型。我得到的错误是:
如何编写测试以确保传递的参数作为正确的数据类型传递?
如果需要,我可以包含更多代码。提前致谢!
api - 关于使用 OAuth 使用您自己的 API 的问题
我正在为我正在处理的项目构建一个 RESTful API,我想让主应用程序使用该 API,因为:
- 这将导致需要维护一组代码
- 如果我们决定为 3rd 方开发人员公开 API,那么它已经完成了
- 它开辟了制作使用它的移动应用程序的可能性
- 我真的很想学习如何去做
API 将托管在子域中https://api.example.com
,而主 Web 应用程序将托管在根域中https://example.com
。
从概念上讲,我了解一切是如何工作的,但我的主要问题是身份验证流程将如何改变。通常,第 3 方应用程序会:
- 获取请求令牌
https://api.example.com/request_token
- 重定向用户以进行身份验证
https://api.authenticate.com/authorize
- 被重定向回第 3 方应用程序
- 从以下位置获取访问令牌
https://api.example.com/access_token
由于我控制这两个域,我可以做类似的事情:
- 当用户登陆登录屏幕时获取请求令牌
https://www.example.com
https://www.example.com
用户使用调用相同代码的表单进行身份验证https://api.example.com/authorize
- 如果凭据有效,则将请求令牌交换为访问令牌
- 访问令牌保存在会话中,并在用户像往常一样注销时过期
第 3 步感觉是错误的,因为会有重复的代码,但它不会让我受到 XSS 攻击吗?是https://www.example.com
发送数据的登录表单,https://api.example.com
因为它们在技术上是不同的域?
我是否过于复杂了?
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 形式传递数据来松散耦合客户端和服务器应用程序的方法。
抱歉,如果我遗漏了一些非常明显的东西,但似乎从这里有两条路线:
保留我的 EJB 业务接口并为通用客户端(iOS 和以后可能出现的其他任何东西)实现一个重复的 restful 接口。
为所有客户端创建一个宁静的界面。
2 号似乎是一个更简洁的设计,但这意味着我必须放弃已经完成的工作并学习休息。有更多经验的人可以提供一些建议吗?我会非常感激。
spring - 会话共享集群环境中 Restful Web 服务中的用户会话管理
我正在尝试使用 Spring-JPA 后端和 Restful Web 服务设置控制服务器应用程序以公开后端方法。我的用户会话和身份验证/授权必须通过后端控制服务器处理。必须在具有用户会话复制的集群环境中设置整个应用程序。
我无法弄清楚使用哪种机制来存储会话,因为 Restful Web 服务是无状态的。我将为每个用户会话生成一个唯一的会话令牌,并将会话令牌和用户属性映射存储为键值对。
我不能使用静态 Maps 和 ServletContext 来存储用户会话,因为会话复制是不可能的。
一种替代方法是将用户会话存储在数据库中。
如果有任何其他方式可以做到这一点,请建议我。
谢谢,哈里
apache - 结合旧站点和新站点结构
我想实现以下内容:
- 新的站点结构,基于新的目录路径、新的 PHP 框架、DB 结构等。该站点应可通过http://www.mysite.com 访问
- 旧结构中的某些页面应该可以继续工作。旧站点结构应该可用并保留在其旧文件夹中,例如
/var/www/myoldsite
- 一般来说,当我调用特定页面时,比如http://www.mysite.com/specificpage.php,应该调用旧站点,否则只能访问新站点的页面。
我应该如何设计?在apache的虚拟主机中?还是在.htaccess
文件中?
rest - 这个 REST API 的参数值应该在哪里?为什么?
我有以下 REST API:
假设该 API 通知用户列表,用户 Martin 有话要说。要通知的用户列表可以从 1 到 1000 不等。一千个用户的列表应该在哪里:查询字符串、HTTP 标头或请求正文?为什么?
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'))) 相同。谢谢你的帮助:-)