npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

api-simulator

v2.0.2

Published

When frontend and backend team started working on some feature parallely, many cases the frontend team needs to wait for backend api/endpoint to progress on frontend development. To avoid those wait times, we could use this api simulator to mock backend

Downloads

25

Readme

api-simulator

When frontend and backend team started working on some feature parallelly, many cases the frontend team needs to wait for backend api/endpoint to progress on frontend development. To avoid those wait times, we could use this api simulator package to mock backend payloads those agreed with backend team. so that the UI mock server will mimic like actual backend api and dispatches mock payloads for frontend api requests.

It has following key features.

  • Very simple to add mock APIs. Its just matter of creating directory structure like expected api path and added the json file with mock payload
  • Customizable behaviors through config file, so that developer doesn't need to know about how this api simulator works
  • Feature specific mock data set. Using this, developer can create multiple mock data set those specific to some feature developments

Key Benefits:

  • Avoid frontend team wait times for actual backend endpoints
  • Frontend team can demonstrate their work without relying on endpoints
  • QA team can change the payload instantly to test different scenarios
  • Json data structure can be readily referable from working mock data

Getting Started

Install api-simulator

npm i api-simulator

Install globally, so that the command will avaialable from anywhere.

npm i -g api-simulator

Once you installed, the package will be installed with sample mocks and config file.

apisimulator.config.js

Click here to refer sample config file

  • apiEndpointExtension -> default value is ".json". ex. "apiEndpointExtension": ".php" or "apiEndpointExtension": ".jsp" and etc

  • defaultMockDataPath -> path to mock api response payloads. The api response payloads will be refered from these file path based on give url. ex. "defaultMockDataPath": "samples/default-mock-dataset"

  • defaultMockDataPath and featureMockDataPath values should be adjecent.
  • featureMockDataPath -> path to feature mock datasets folder, it should be absolute or relative to current working directory. its useful to maintain the different data sets for the same route based on configires feature

  • baseUrlPath -> base url path. path that needs to appended with api url. default valie is "/mockapi". ex. "baseUrlPath": "/backend". the based url will be based on this value like https//localhost:3030/backend

  • useTheseFeatureMocks -> feature data set that needs to be refered for certain api url and rest can refered from default mock dataset. If its given with list of features, it will take mock data from first matched mock endpoint path, otherwise dispatch mock data from root route

  • sslCertFiles -> ssl cert files. by default it will uses openssl self signed files those are generated for localhost. As of now it only supports https. Ex.

    "sslCertFiles": {
         "key": "samples/key.pem",
         "cert": "samples/cert.pem"
     }
  • ignoreJsonExtension -> Add the route file name that should ignore extension on the endpoint url. ex. if we set "get_user.json", the mockdata will be dispatched for for "https://localhost:3030/backend/sessions/userinfo" we should give filename with .json extension

    "ignoreJsonExtension": [
       "userinfo.json",
       "callback.json"
    ]
  • ignoreQueryStringParameter -> we can provide the api path and the query string parameters those needs to be ignored it uses json-server as mock server. json-server provides the quering capabilities based on url query string params. Real case scenario, we should rely on actual api url and it should not affect the defined/expected mockdata. To achive that, we could configure the query string params those needs to be ignored like below ex. your mockdata for "/backend/level1/api.json?id=1&parentid=1&offset=10" needs to be listed based on id alone and it should not consider parentid and offset. you need to set the config like like below.

    "/backend/level1/api.json": {
            "parentid": "",
            "offset": ""
        }

    the apisimulator will simply ignore parent & offset values, but it will consider id, because we didn't mention in config. It will match the object like below from the mock data /backend/level1/api.json?id=1&parentid=2&offset=10

    {
      "parentid": 1,
      "id": 1,
      "offset": 0,
      "name": "Riyaz"
    }, ...

Step by Steb usage details

  1. Step 1

    npm i api-simulator

    OR

    npm i -g api-simulator
  2. Step 2

    Create config file based on our requirement

    Create Config File

    const MOCK_API_CONFIGS = {
      "apiEndpointExtension": ".php",
      // give mockfolder path relative to package. since the package will be in project/node_modules/api-simulator,
      // give relative path of mockdata folders like below
      "defaultMockDataPath":  "../../../mocks/defaultMockDataset",
      "featureMockDataPath":  "../../../mocks/featureMockDataset",
      "baseUrlPath": "/backend",
      "useTheseFeatureMocks":[],
      "ignoreJsonExtension": [
        "userinfo.json"
      ],
      "ignoreQueryStringParameter": {
        "/backend/books.json": {
          "id": ""
        }
      }
    }
    
    module.exports = MOCK_API_CONFIGS;
  3. Step 3

    Create default and feature mock data set

    Mock Dataset folder stricture

  4. Step 4

    That's it your ready to run your mock server. if you are installed locally, then you need to add npm script command in your package.json file

    "api:simulator": "api-simulator -c mocks/apisimulator.config.js"
  5. Step 5

    Execute following command to run the api-simulator

    npm run api:simulator

    It will start the api-simulator server and it will be listening port 3030. You can access the mock api from

    https://localhost:3030/<baseUrlPath>
  6. Step 6

    Now you can see the mock api responses

    *** api without extension *** api without extension

    *** api with extension *** api with extension

    *** api call which ignores query param as per configuration *** api call which ignores query params

    *** api call with filtered mockdata using qr param *** api call with filtered mockdata using qr param

    *** different mockdata with configured feature data sets *** feature set config

    data from configured feature set

    default and feature data for same api

    data from configured feature set 2

    default and feature2 data for same api

Author

  • Mohammed Riyaz

License

This project is licensed under the MIT License - see the LICENSE.md file for details