从浏览器应用程序发布数据而无需编写自己的服务器

Dre*_*kes 7 javascript web-services single-page-application

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

是否有可以用于此的Web服务?我查看了Amazon SQS(简单队列服务),但由于交叉原始策略,我无法在浏览器中调用其REST API .

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

jjp*_*aga 5

不仅有Web服务,而且现在有强大的系统可以为应用程序提供服务器端逻辑的方法.它们被称为BaaS或Backend即服务提供商,通常为您的前端应用程序提供一些支持.

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

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

  • 对于原型设计 - 如果你想创建一个灵活的应用程序,但你不想为数据编码所有后端逻辑 - 无需处理代表的所有操作和系统管理 - 通过BaaS提供商你只需要良好的前端结束您可以想象的最简单CRUD应用程序的编码技巧.有些BaaS甚至允许您绑定一些Reduce算法来调用您的API执行.

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

所有这一切都很神奇,但我还没有提到它们中的任何一个.我将列出我最了解并实际用于项目的那些.可能有很多,但据我所知,这个人已经满足了我的大部分新闻,无论是以前提到的那些.

Parse.com

Parse最突出的功能针对移动设备; 然而,时下解析包含API的数量惊人的,允许你使用它作为(8 SDK是在Windows为Javascript,Android和甚至是Windows 8应用程序全功能后端服务推出今年几个月前).

Parse代码如何在Javascript中查找?

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

首先,在Pavascript中将Parse添加为脚本标记:

<script type="text/javascript" src="http://www.parsecdn.com/js/parse-1.1.15.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

然后,通过给定的应用程序ID和Javascript密钥,初始化Parse.

Parse.initialize("APPLICATION_ID", "JAVASCRIPT_KEY");
Run Code Online (Sandbox Code Playgroud)

从那里,它是所有对象操纵

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);
  }
});
Run Code Online (Sandbox Code Playgroud)

身份验证和安全性如何?

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

你真的在网络应用程序中使用过吗?

是的,这是我的中档保真原型的首选工具.

Firebase.com

Firebase的主要功能是能够为您的应用程序提供实时,而不会有任何麻烦.您不需要MeteorJS服务器即可将推送通知带入您的软件.如果您了解Javascript,那么您可以将实时魔术带给您的用户.

Firebase在Javascript中的外观如何?

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

https://SampleChat.firebaseIO-demo.com/users/fred/name/first
Run Code Online (Sandbox Code Playgroud)

你不需要成为一名火箭科学家知道你正在检索用户"Fred"的第一个名字,至少有一个 - 通常应该有一个UUID而不是一个名字,但是,嘿,这是一个例子,给我一个休息时间.

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

<script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>
Run Code Online (Sandbox Code Playgroud)

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

var myRootRef = new Firebase('https://myprojectname.firebaseIO-demo.com/');
Run Code Online (Sandbox Code Playgroud)

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

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);
    }
  });
Run Code Online (Sandbox Code Playgroud)

身份验证和安全性如何?

你很幸运!Firebase 大约两周前发布了他们的安全API!我还没有探索它,但我确信它填补了大部分空白,让随机人员可以根据自己的目的使用你的参考.

你真的在网络应用程序中使用过吗?

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


这些服务的神奇之处是什么?如果您阅读了依赖注入模拟对象测试,那么您可以通过REST Web服务提供程序完全替换所有这些服务.

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

Parse和Firebase都有数据浏览器管理器,这意味着您可以通过简单的Web浏览器查看您正在操作的数据.作为最终的免责声明,除了詹姆斯·塔普林(Firebase联合创始人)足以让我获得对Firebase的一些Beta访问权之外,我与任何其他服务都没有任何关系.


Cas*_*mor 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'
})
Run Code Online (Sandbox Code Playgroud)

这将是控制台中的一个错误,表明请求失败,但该消息无论如何都会显示在队列中。