requestly-mock-server
This Repo contains the core express server @requestly/mock-server package which powers Requestly's Cloud Mock Server.
Development
Install Dependencies
npm i
Start Server
npm start:dev
Usage with firebase-functions
Install
npm i @requestly/mock-server
Setup
import * as functions from 'firebase-functions';
import { MockServer } from '@requestly/mock-server';
import firebaseConfigFetcher from '../firebaseConfigFetcher';
const startMockServer = () => {
const expressApp = new MockServer(3000, firebaseConfigFetcher, '/api/mockv2').app;
return functions.runWith({ minInstances: isProdEnv() ? 1 : 0 }).https.onRequest(expressApp);
};
export const handleMockRequest = startMockServer();
class FirebaseConfigFetcher implements IConfigFetcher {
getMockSelectorMap = (kwargs?: any) => {
};
getMock = (id: string, kwargs?: any) => {
}
}
const firebaseConfigFetcher = new FirebaseConfigFetcher();
export default firebaseConfigFetcher;
Requestly Cloud Mock Server Architechture
STEPS
- Request coming from GET
https://username.requestly.dev/users
- Firebase Function passes the request to @requestly/mock-server
- @requestly/mock-server - MockSelector
a. Fetches all the available mocks using
IConfigFetcher.getMockSelectorMap()
(Firestore in case of Requestly)
b. Select mock if any endpoint+method matches the incoming request (GET /users)
c. Fetch Mock using IConfigFetcher.getMock(mockId)
and pass it to MockProcessor - @requestly/mock-server - MockProcessor
a. Process Mock - Response Rendering
b. Return Response