2016-05-18 7 views
0

私は、ローカルホスト上で動作するExpressアプリケーションで非常に簡単な「POST」APIサインアウトコールを複製しようとしています。これは、サインアウト情報を取得し、それがどのように見えるべきかMY-SERVERrequest.post(Express.js)経由のPOSTカスタムヘッダー

にローカルホストからそれを渡す必要があります。個別のルートファイルに設定され、

curl "http://MY-SERVER/api/2.2/auth/signout" -X POST -H "Auth:1245" 

私はrequest.postを使用しています「signout.jsを」 (下記参照)。私はそれが動作するはず伝えることができ、まだ私は

curl https://localhost:8080/api/auth/signout?auth=12345 --cacert /etc/nginx/ssl/server.crt 

を実行したときにそれが唯一の

任意のアイデア "/ API /認証/サインアウト?AUTH = 12345を取得することはできません" を返すものと

var express = require('express'); 
var request = require('request'); 
var cheerio = require('cheerio'); 
var router = express.Router(); 
var OnlineApiUrl = 'https://MY-SERVER/api/2.2/'; 

//Sign Out 
router.post('/auth/signout', function(req, res) { 
var authentication_token = req.query.auth_token; 

request.post({ 
url: OnlineApiUrl + 'auth/signout', 
headers: { 
     'Auth': authentication_token 
} 
}, function(err, response, body) { 
var $ = cheerio.load(body); 
var hasError = $('error').length; 
if (hasError) { 
    response = { 
    http_code: $('error').attr('code'), 
    http_message: $('summary').text() 
    }; 
} else { 
    response = { 
    http_code: 204 
    }; 
} 
return res.json(response); 
}); 
}); 
module.exports = router; 

ここで私は何が欠けているのですか?そのカスタムヘッダーだけを渡す必要があります。私はまた、POSTリクエストのために "Can not GET"を与えている理由もわかりません。

+0

サーバはどのようにPOSTリクエストを処理しますか?また、価値があるhttp://stackoverflow.com/questions/611906/http-post-with-url-query-parameters-good-idea-or-not – br3w5

+0

サーバーはbodyParserを使用します:app.use(bodyParser.urlencoded({extended :true}));率直に言って、ヘッダーに「Content-type」や「Content-length:0」などが必要かもしれないと思っていますか?それはそれかもしれませんか? –

答えて

0

私は解決策を考え出しました。問題は、「POST」を2回使用していたことです。上位レベルの「router.post」と「request.post」の両方です。上位レベルのものを 'router.get'( 'request.post'を保持したまま)として置くことで解決しました。

関連する問題