【问题标题】:Node RESTful API to Firebase Cloud Functions节点 RESTful API 到 Firebase 云函数
【发布时间】:2017-10-15 16:16:27
【问题描述】:

我有一个在 Node.js 中工作的应用程序,它将处理 Stripecharges。当我使用Firebase 托管时,我需要使用谷歌Cloud Functions 来处理这个问题。有没有一种简单的方法可以将我的代码“翻译”为index.js 中的云函数?


exports.stripecharge = functions.https.onRequest((req, res) => 不知道如何在我现有的代码中实现这一点

这是我的工作 API(测试密钥已修改):

var stripe = require("stripe")("sk_test_213123123123123");
var express = require('express'), bodyParser = require('body-parser');

var urlencodedParser = bodyParser.urlencoded({ extended: false })
var app = express();


app.get('/',function(req, res) {
 // for kicks, just sending checkout
 res.send('<form action="/charge" method="POST">Buy it !<script 
src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-
key="pk_test_123123123123213"></script></form>')
});


app.post('/charge',urlencodedParser, function(req, res) {

// grab a token
var token = req.body.stripeToken;

// creating a charge, for real use add things like error handling
stripe.charges.create({
amount: 2000,
currency: "usd",
source: token, // obtained with Stripe.js
description: "Charge"
}, function(err, charge) {
  res.send("You made a charge: "+ charge.id);
 });
});

【问题讨论】:

    标签: javascript node.js firebase stripe-payments google-cloud-functions


    【解决方案1】:

    您似乎已经有了一个可以运行的 Express 应用。事实证明,您可以将 Express 应用程序传递给 Cloud Functions:

    exports.api = functions.https.onRequest(app)
    

    执行此操作时,来自您应用的所有路由都将由 Cloud Functions 处理。 URL 的路径将以函数名称为前缀。在上述情况下,即为“api”,因此路径将是/api//api/charge 等。

    您可以在Firebase samples repo 中看到one example

    【讨论】:

    • 好的,这很好。我可以在现有的 Express 应用程序 server.jsconst functions = require('firebase-functions'); 中使用此代码,并以某种方式将其部署到我的 Firebase 项目,还是应该将我的代码复制到 Index.js,并在 @ 中要求 Express 987654329@?
    • 不管你如何组织你的代码,但是你的 index.js 模块必须导出 HTTPS 函数,这样 Cloud Functions 才会接受它。
    • 好的,谢谢。我的意思是:是否可以在Index.js 中引用外部server.js(Express 应用程序),并以这种方式部署它?所以它们在我的系统上作为单独的文件保留。如果是这样,这是如何完成的?
    • 可能不会不进行一些更改。您可能想了解模块如何与节点一起工作。 require 在 Cloud Functions 中的工作方式没有什么独特之处。
    • Cloud Functions 由与您的网站不同的主机提供服务,因此您还必须使用 CORS,或与 Firebase Hosting 集成。
    猜你喜欢
    • 2017-10-03
    • 2021-07-16
    • 2017-12-26
    • 2019-03-10
    • 1970-01-01
    • 2018-06-25
    • 2017-10-13
    • 2019-01-18
    相关资源
    最近更新 更多