我已启动并运行ExpressJS教程服务器:
var express = require( 'express' );
var app = express();
app.get( '/', function( req, res ) {
console.log( "Got a GET request for the homepage" );
res.send( 'Hello GET!' );
} );
app.post( '/', function( req, res ) {
console.log( "Retrieved a post request" );
res.send( 'Hello POST' );
} );
app.delete( '/del_user', function( req, res ) {
console.log( "Got a DELETE request for /del_user" );
res.send( 'Hello DELETE' );
} );
app.get( '/list_user', function( req, res ) {
console.log( "Got a GET request for /list_user" );
res.send( 'Page Listing' );
} );
app.get( '/ab*cd', function( req, res ) {
console.log( "Got a GET request for /ab*cd" );
res.send( 'Page pattern match' );
} );
var server = app.listen( 8081, function() {
var host = server.address().address;
var port = server.address().port;
console.log( "Example app listening at http://%s:%s", host, port );
} );
我想通过使用请求库构建一次性NodeJS客户端来测试app.post函数,以便向服务器发送POST请求 - 使用来自另一个NodeJS相关问题问题的代码:
var request = require('request');
var myJSONObject = {};
request( {
url: "http://127.0.0.1:8081/",
method: "POST",
json: true,
body: myJSONObject
}, function (error, response, body) {
if ( error ) {
console.log( error );
return;
}
console.log(response);
}
);
运行客户端部分后,我在错误变量中收到此错误:
[错误:无效协议:127.0.0.1:]
修改
我刚在家用电脑上运行它,它没有问题。也许在工作中的一些设置是错误的。
感谢您的帮助。
我
答案 0 :(得分:1)
按照npm请求包网站上的代码docs ...
https://www.npmjs.com/package/request
示例:
request.post({url:'http://service.com/upload', formData: formData}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
答案 1 :(得分:0)
而不是json: true
和body: someObject
,请尝试json: someObject
。
答案 2 :(得分:0)
您将NodeJS库中的http.request
与NPM中提供的请求包混合在一起。你是require
后者,但试图使用前者的语法。
只需更改客户的第一行
var request = require('request');
的
var request = require('http').request;
它应该顺利。
编辑:您还必须将最后一行切换为
).end();