7

我需要用户能够从单页浏览器应用程序 (SPA) 向我发布数据,但我不能将服务器端代码放在主机上。

有没有我可以使用的网络服务?我查看了Amazon SQS (简单队列服务),但由于跨源策略,我无法从浏览器中调用他们的 REST API 。

我现在更喜欢易于开发而不是健壮性,所以即使只是收到一封电子邮件也可以。我不确定该网站是否会流行起来。如果是这样,那么我将开发一个服务器端组件并移动主机。

4

6 回答 6

5

不仅有 Web 服务,而且现在有一些健壮的系统提供了一种方法,可以在服务器端对应用程序的某些逻辑进行处理。它们被称为 BaaS 或后端即服务提供商,通常为您的前端应用程序提供一些主干。

虽然它们有多种用途,但我将列出我认为最常见的:

  • 对于移动应用程序- 您可以使用标准平台来存储应用程序的逻辑和数据,而不必为您编写代码的每个设备学习 API。

  • 对于原型设计——如果你想创建一个漂亮的应用程序,但你不想为数据编写所有后端逻辑 - 更少处理代表的所有操作和系统管理 - 通过 BaaS 提供商你只需要好的前端编写您能想象到的最简单的 CRUD 应用程序的最终技能。一些 BaaS 甚至允许你绑定一些Reduce 算法来调用你的执行到他们的 API。

  • 对于 Web 应用程序- 当 PaaS(平台即服务)来到镇上以减轻后端开发人员的工作以避免系统管理和操作的麻烦时,后端也会发生同样的逻辑。有许多克隆展示了这种策略的真正威力。

所有这一切都令人惊叹,但我还没有提及其中任何一个。我将列出我最了解并在项目中实际使用过的那些。可能有很多,但据我所知,这一个已经满足了我的大部分新闻,无论是前面提到的任何一个。

Parse.com

Parse 最突出的功能针对移动设备;然而,如今 Parse 包含大量的 API,允许您将其用作 Javascript、Android 甚至 Windows 8 应用程序的全功能后端服务(Windows 8 SDK 在今年几个月前推出)

Parse 代码在 Javascript 中的外观如何?

Parse 通过类和对象工作(不是很漂亮吗?),因此您首先创建一个特定的类(可以通过 Javascript、REST 甚至数据浏览器管理器完成),然后将对象添加到特定的类。

首先,将 Parse 添加为 javascript 中的脚本标记:

<script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.1.15.min.js"></script>

然后,通过给定的 Application ID 和 Javascript Key,初始化 Parse。

Parse.initialize("APPLICATION_ID", "JAVASCRIPT_KEY");

从那里开始,一切都是对象操作

var Person = Parse.Object.extend("Person"); //Person is a class  *cof* uppercase *cof* 
var personObject = new Person();
  personObject.save({name: "John"}, {
  success: function(object) {
    console.log("The object with the data "+ JSON.stringify(object) + " was saved successfully.");
  },
  error: function(model, error) {
    console.log("There was an error! The following model and error object were provided by the Server");
    console.log(model);
    console.log(error);
  }
});

身份验证和安全性如何?

Parse 有一个基于用户的身份验证系统,它几乎允许您存储可以操作数据的用户群。如果将数据与用户信息进行映射,则可以确保只有给定用户才能操作特定数据。另外,在 Parse 应用程序的设置中,您可以指定不允许客户端创建类,以确保执行不必要的调用。

您真的在 Web 应用程序中使用过吗?

是的,它是我选择中等保真原型的工具。

Firebase.com

Firebase 的主要功能是能够轻松地为您的应用程序提供实时。您不需要MeteorJS服务器即可将推送通知带到您的软件。如果您了解 Javascript,那么您就已经为您的用户带来了实时魔法。

Firebase 在 Javascript 中的外观如何?

Firebase 以 REST 方式工作,我认为他们在构建REST 的荣耀方面做得非常出色。作为一个很好的示例,请查看 Firebase 中的以下资源结构:

https://SampleChat.firebaseIO-demo.com/users/fred/name/first

你不需要成为火箭科学家就知道你正在检索用户“Fred”的名字,至少有一个 - 通常应该有一个 UUID 而不是名字,但是嘿,这是一个例子,让我休息一下-。

为了开始使用 Firebase,就像 Parse 一样,添加他们的 CDN Javascript

<script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>

现在,创建一个允许您使用 Firebase API 的引用对象

var myRootRef = new Firebase('https://myprojectname.firebaseIO-demo.com/');

从那里,您可以创建一堆整洁的应用程序。

var USERS_LOCATION = 'https://SampleChat.firebaseIO-demo.com/users';
var userId = "Fred"; // Username

var usersRef = new Firebase(USERS_LOCATION);
  usersRef.child(userId).once('value', function(snapshot) {
    var exists = (snapshot.val() !== null);
    if (exists) {
        console.log("Username "+userId+" is part of our database");
    } else {
        console.log("We have no register of the username "+userId);
    }
  });

身份验证和安全性如何?

你很幸运!Firebase大约两周前发布了他们的安全 API !我还没有探索它,但我确信它填补了大部分空白,允许随机的人使用你的参考来达到他们自己的目的。

您真的在 Web 应用程序中使用过吗?

嗯……好吧,不。我在Chrome 扩展程序中使用了它!它仍在进行中,但它将成为 Chrome 扩展程序中的实时聊天。那不是很酷吗?美好的。我觉得很酷。无论如何,您可以在他们的示例页面中浏览更多精彩的 Firebase示例。


这些服务有什么魔力?如果您阅读了Dependency Injection and Mock Object Testing,在某些时候您可以通过 REST Web 服务提供者完全替换所有这些服务为您自己的。

由于这些服务是为在任何应用程序中使用而创建的,因此它们已准备好 CORS。如前所述,我已经成功地从多个域中使用了它们,没有任何问题(我什至尝试在 Chrome 扩展中使用 Firebase,我相信我很快就会成功)。

Parse 和 Firebase 都有数据浏览器管理器,这意味着您可以通过简单的 Web 浏览器查看正在处理的数据。作为最后的免责声明,除了James Taplin(Firebase 联合创始人)出色到可以借给我一些 Firebase Beta 访问权限之外,我与任何这些服务都没有任何关系。

于 2012-12-26T04:53:49.363 回答
5

你实际上可以从浏览器使用 SQS,即使没有 CORS,只要你只需要浏览器发送消息,而不是接收它们。警告:这是一个会让我的 CS 教授哭泣的组合。

当您通过 javascript 执行 GET 请求时,浏览器将始终执行请求,但是,如果响应来自同一来源(协议、主机、端口),您将只能访问该响应。这是你的车票,因为消息可以通过 GET 发布到 SQS 队列,而且谁真正关心响应呢?

假设您使用的是 jquery,您的队列是https://sqs.us-east-1.amazonaws.com/71717171/myqueue,并且允许任何人发布消息,以下将向队列发布一条正文为“HITHERE”的消息:

$.ajax({
  url: 'https://sqs.us-east-1.amazonaws.com/71717171/myqueue' +
       '?Action=SendMessage' +
       '&Version=2012-11-05' +
       '&MessageBody=HITHERE'
})

控制台中会出现一个错误,提示请求失败,但无论如何消息都会显示在队列中。

于 2013-03-30T12:52:22.573 回答
1

你考虑过JSONP吗?这是从 javascript 调用跨域脚本而不会遇到同源策略的一种方法。不过,您将不得不在某处设置一些脚本来向您发送数据。Javascript 不能胜任这项任务。

于 2012-11-13T22:02:25.993 回答
1

根据您要发送的数据类型以及您将要使用的数据,解决此问题的一种方法是使用 Ajax 将数据发布到 Google 电子表格。不过实现起来有点棘手。是关于它的另一个stackoverflow问题。

如果演示文稿不是那么重要,您可以只嵌入一个Google 电子表格表单

于 2012-12-21T13:31:39.900 回答
1

怎么样mailto:youremail@goeshere.com?希希

同时,您可以打开一些免费主机,例如AltervistaHeroku类似它们的其他东西..这样您就可以连接到他们的服务器,如果我记得这些免费服务允许的话servers p2p,那么you can create a sort of personal web services and push ajax requests as well,显然他们的服务器对于免费帐户来说很慢,但我认为这已经足够了如果您没有那么多用户流量,那么您应该打开一些更好的 VPS 或托管或云解决方案。

于 2012-12-24T11:15:39.760 回答
1

也许 CouchDB 可以提供您所追求的。IrisCouch提供免费的 CouchDB 实例。将其锁定,以便用户无法查看文档并具有合理的验证功能,并且您拥有一个简单的 RESTful 位置来存储您的数据。

于 2012-12-24T11:50:53.753 回答