Я пытался создать заглушки API для приложения, созданного с помощью yeoman
. Здесь ничего особенного, я просто позвонил:
mkdir demo1
cd demo1
yo angular
Для целей разработки мне нужны заглушки API, и единственный модуль, который я нашел до сих пор, который делает это, — это монитор. Однако, насколько я могу судить, лайнман не очень удобен для йоменов, поэтому я запустил лайнмана на порту 8000
, предоставил несколько заглушек API (таких как в документации) и добавил "grunt-connect-proxy": "~0.1.5"
для проецирования узловых модулей, затем создал прокси, который передал все localhost:9000/api/*
в localhost:8000/api/*
, таким образом предоставляя заглушки.
Пока это работает, я хотел бы удалить зависимость от обходчика и сам предоставить заглушки. Это код, который я написал до сих пор (добавлено express
в качестве зависимости для анализа маршрутизации/параметров) - большая часть кода представляет собой фрагменты из экспресс-модулей, чтобы обернуть http.ServerRequest
и http.ServerResponse
в экспресс-модули request
и response
:
// load all grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
var drawRoutes = require('./config/server').drawRoutes;
var express = require('express');
var expressApp = express();
drawRoutes(expressApp);
var router = expressApp._router;
// Provide api stubs through express router functionality.
var apiStubSnippet = function(req, res, next) {
var match = router.matchRequest(req);
if (typeof(match) !== 'undefined') {
// Found a match, invoke it
if (match.callbacks.length > 0) {
var _req = require('express/lib/request');
var _resp = require('express/lib/response');
// Set the two objects together ... but why?!
_req.__proto__ = req;
_req.app = expressApp;
_req.res = _resp;
_resp.__proto__ = res;
_resp.app = expressApp;
_resp.req = _req;
match.callbacks[0](_req, _resp);
}
} else {
// No match on the router, go next.
next();
}
};
На данный момент вызовы кажутся разрешенными (ошибок в консоли больше нет). Но звонки остаются в ожидании, и я не знаю, что делать дальше. Я почти уверен, что код слишком сложен для того, что ему нужно делать, но я новичок в модулях grunt и node.
Любая помощь будет делать, спасибо.