// call the packages
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var figlet = require('figlet');
var querystring = require('querystring');
var http = require('http');
var fs = require('fs');
var request = require('request');
// configure app to use bodyParser()
// this will let app get the data from a POST
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.text());
// set port
var port = process.env.PORT || 8082;
// get an instance of the express Router
var router = express.Router();
// middleware to use for all requests
router.use(function(req, res, next) {
// do logging
console.log('UnitGener router invoking');
// go to the next routes and don't stop here
next();
});
// test route to make sure everything is working (accessed at GET http://localhost:8082/api)
router.get('/status', function(req, res) {
res.json({
message: 'UnitGener is ready to work!'
});
});
//noinspection JSUnresolvedFunction
router.route('/function')
.post(function(req, res) {
console.log(req.body);
var formatted = req.body;
request.post({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
url: 'http://localhost:5000/generate',
body: formatted
}, function(error, response, body) {
console.log(body);
});
});
app.use('/api', router);
app.listen(port);
});
以下は、指定した構成でPOSTルートを作成するための完全なコードであり、postメソッド内で別のpostルートを呼び出しています。しかし、 "throw new TypeError( 'first argument must文字列またはバッファ '); "このエラー。私はいくつかのグーグル検索を行い、いくつかの変更も行いましたが、どれも機能せず、エラーを指摘するのが難しいことに気付きました。 )また、動作しませんでした。これを見つけるためのアドバイスをお願いします。
前もって感謝します
エラーはリクエストの呼び出しにあります。フォームを正しく送信するには、
request.post({
url: 'http://localhost:5000/generate',
form: formatted
}, function(error, response, body) {
console.log(body);
});
Npmモジュールrequest-promise-nativeを使用することをお勧めします: https://github.com/request/request-promise-nativehttps://www.npmjs.com/ package/request-promise
var rp = require('request-promise');
var options = {
method: 'POST',
uri: 'http://api.posttestserver.com/post',
body: {
some: 'payload'
},
json: true // Automatically stringifies the body to JSON
};
rp(options)
.then(function (parsedBody) {
// POST succeeded...
})
.catch(function (err) {
// POST failed...
});
あなたの体はバッファであることが期待されますこれを試してください、リクエストオプションでjson:true
request.post({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
url: 'http://localhost:5000/generate',
body: formatted,
json:true
}, function(error, response, body) {
console.log(body);
});
なぜ書いているのですか:
router.route('/function')
.post(function(req, res) {
試してください:
router.post('/function', function(req, res) {