Skip to content

Instantly share code, notes, and snippets.

@mkacky
Created June 18, 2017 14:39
Show Gist options
  • Save mkacky/f024f326df286d51c0ad6b763b623527 to your computer and use it in GitHub Desktop.
Save mkacky/f024f326df286d51c0ad6b763b623527 to your computer and use it in GitHub Desktop.
var express = require('express');
const bodyParser = require('body-parser');
var jsg = require('json-schema-generator')
var http = require('http');
var async = require('async')
var app = express();
app.use(bodyParser.json());
// HTTPリクエストを受け取る部分
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.get('/services', function(req, res){
var retObj = {football : [ {name : "osako", label: "hanpanai"}, { name: "kagawa", label : "udon"} ]};
res.json(retObj);
});
// POSTされたHTTPリクエストのボディのスキーマを返す
app.post('/pet', function (req, res) {
var reqBody = req.body;
// console.dir("req.body : " + req.body);
console.dir(reqBody);
var reqSchema = jsg(reqBody);
var schema = {schema : reqSchema};
console.dir(schema);
var api_res = null;
// http.get({
// host : 'localhost',
// port : 3000,
// path: '/services'
// }, function(res) {
// console.log("'Got response.' : " + 'Got response.');
// res.on('data', function(chunk) {
// console.log("'Data is successfully received.' : " + 'Data is successfully received.');
// callback(null, res);
// });
// console.log("'Received data???' : " + 'Received data???');
// });
// var res_schema = jsg(res.body);
// res.json(schema);
// });
console.log("Got response???");
// res.send(reqSchema);
// res.json(reqSchema);
// res.json(schema);
async.waterfall([
function(callback){
http.get({
host : 'localhost',
port : 3000,
path: '/services'
}, function(response) {
console.log('Got response.');
response.body = "";
response.on('data', function(chunk) {
// response.body += chunk;
// console.log('Data is successfully received.');
// console.log(response.body);
console.log(chunk);
callback(null, chunk);
});
// response.on('end', function(chunk){
// console.log("response.body : " + response.body);
// callback(null, response);
// });
console.log('Received data???');
});
},
function(resBody, callback){
console.log("resBody : " + resBody);
var res_schema = jsg(JSON.stringify(resBody));
console.log("res_schema : " + res_schema);
var res_body = [reqSchema, res_schema];
console.log("res_body : " + res_body);
res.json(res_body);
callback(null, 'done');
}
], function(err, result){
if(err){
throw err;
}
console.log('waterfall all done. ', result);
});
});
// サーバーを起動する部分
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment