gpt4 book ai didi

javascript - 关于使用 Node.js 作为 Braintree 的本地服务器有疑问吗?

转载 作者:行者123 更新时间:2023-12-03 04:53:32 24 4
gpt4 key购买 nike

我对 JavaScript 并不陌生,但对 Node.js 和后端语言很陌生。我有一个非常简单的问题。

我已经在计算机上安装并设置了 Node.js,并且正在尝试让服务器在我的静态文件和目录与浏览器之间运行,以便能够发送和接收请求。我下载了 Braintree 的免费沙盒(已找到 here )进行练习,以进行一些虚假交易,以便更好地了解其工作原理。

我通过在命令行上运行 npm install -g http-server 来设置本地服务器,然后运行 ​​http-server 来设置它。

然后我在命令行中收到以下消息:

Starting up http-server, serving ./public
Available on:
http://127.0.0.1:8080
http://10.0.1.4:8080
Hit CTRL-C to stop the server

因此,通过此设置...如果我想要执行 get()post() 方法并查看它在我的“服务器”和我的静态文件。我该怎么做呢?例如,如果我要设置 Braintree 的沙盒环境,然后使用 Braintree 网站上的以下代码创建 clientToken

const http = require('http'),
url = require('url'),
fs = require('fs'),
express = require('express'),
braintree = require('braintree');


const gateway = braintree.connect({
environment: braintree.Environment.Sandbox,
merchantId: "xxxxx",
publicKey: "xxxxx",
privateKey: "xxxxx" //blocked out real numbers for privacy
});

这是我为交易创建“客户端 token ”的剩余代码...和 ​​here是我通过 Braintree 网站遵循的指南...

http.createServer((req,res) => {
gateway.clientToken.generate({
},(err, response) => {
if(err){
throw new Error(err);
}
if(response.success){
var clientToken = response.clientToken
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(clientToken);
res.end("<p>This is the end</p>");
} else {
res.writeHead(500, {'Content-Type': 'text/html'});
res.end('Whoops! Something went wrong.');
}
});
}).listen(8080,'127.0.0.1');

所以,我的问题是...如果我想使用 get() 方法生成发送 token 给客户端...我该怎么做?它必须是一个单独的js文件吗?它们将如何联系起来?如果他们在同一个目录中,他们会看到对方吗?

以下是 Braintree 网站上有关如何发送客户端 token 的示例:

app.get("/client_token", function (req, res) {
gateway.clientToken.generate({}, function (err, response) {
res.send(response.clientToken);
});
});

如何将其集成到我当前的代码中并实际工作?如果这些是基本问题,我很抱歉,但我想对此有更好的理解。预先非常感谢!

最佳答案

我对 Braintree 不太了解,但通常你会使用像express.js这样的东西来处理这样的东西。因此,我将通过我拥有的应用程序为您提供一些简单示例。

#!/usr/bin/env node

var http = require('http');
var app = require('../server.js');
var models = require("../models");

models.sync(function () {
var server = http.createServer(app);
server.listen(4242, function(){
console.log(4242);
});
});

这就是启动一切的文件。不用担心模型,它只是同步数据库。

var express = require('express');
var path = require('path');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var app = express();

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
// share public folder
app.use(express.static(path.join(__dirname, 'public')));

require('./router.js')(app);

module.exports = app;

接下来是将所有内容连接在一起的 server.js。 app.use() 行用于添加中间件和 app.use(logger('dev'));设置您要查找的路线记录器。

app.use(express.static(path.join(__dirname, 'public')));共享公共(public)目录中的所有文件,这就是您要寻找的静态文件

var path = require('path');

module.exports = function(app){
//catch
app.get('*', function(req, res){
res.sendFile(path.join(__dirname, '..', 'public', 'index.html'));
});
}

最后一 block 是router.js。这是您放置所有获取和发布路线的地方。一般来说,我发现如果你在示例中看到 app.get 或 app.post ,那里谈论的是 express 的东西。它经常与 Node 一起使用,并且使路由方式更容易。

此外,如果您使用 token ,路线将如下所示。

app.get('/print', checkToken, function(req, res){
print.getPrinters(function(err, result){
response(err, result, req, res);
});
});

function checkToken(req, res, next){
models.Tokens.findOne({value: req.headers.token}, function(err, result){
if(err){
res.status(500).send(err);
}else if(result == null){
console.log(req.headers);
res.status(401).send('unauthorized');
}else{
next();
}
});
}

因此,您想确保任何路线都有一个 token ,您只需将该函数传递给它即可。同样,模型适用于数据库

关于javascript - 关于使用 Node.js 作为 Braintree 的本地服务器有疑问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42546537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com