Skip to content

Latest commit

 

History

History
140 lines (102 loc) · 5.64 KB

File metadata and controls

140 lines (102 loc) · 5.64 KB

Mokapi

Your API Mocking Tool for Agile Development

Github release Build status Codecov branch MIT License

Download · Documentation

🚀 Overview

Mokapi is an open-source tool that helps Agile, DevOps, and Continuous Deployment teams design, test, and validate APIs before implementation. It enables rapid prototyping of scenarios—like delayed responses, failures, or edge cases—without needing a live backend. By simulating real-world conditions early, Mokapi improves API quality and reduces the risk of bugs in production.

✨ Features

  • Multiple Protocol support: HTTP, HTTPS, Apache Kafka, SMTP, LDAP
  • Everything as Code: Reusing, version control, consistency and integrate mocks with your CI/CD.
  • An embedded JavaScript engine to control everything - status, headers, delays, errors or other edge cases.
  • Patch Configuration changes for mocking needs, rather than changing the original contract
  • Multiple Provider support: File, HTTP, GIT, NPM to gather configurations and scripts.
  • Dashboard to see what's going on.

🧩 OpenAPI & AsyncAPI Support

Mokapi supports mocking REST APIs using OpenAPI 2.0 / 3.0 / 3.1 and event-driven systems using AsyncAPI.

🔧 Spin Up Mokapi

Install and start Mokapi using one of the following methods. Replace the URL with your own OpenAPI or AsyncAPI specification.

Windows

choco install mokapi
mokapi https://petstore31.swagger.io/api/v31/openapi.json

MacOS

brew tap marle3003/tap 
brew install mokapi
mokapi https://petstore31.swagger.io/api/v31/openapi.json

Docker

docker run -p 80:80 -p 8080:8080 mokapi/mokapi:latest https://petstore31.swagger.io/api/v31/openapi.json

🎯 Hit Your First Mock

Once Mokapi is running, you can make requests to your mocked API like so:

curl http://localhost/api/v31/pet/2 -H 'Accept: application/json'

🧩 Customize Your Mock with JavaScript

Mokapi makes it simple to control responses using embedded JavaScript.

For example, you can dynamically change the response based on query parameters:

import { on } from 'mokapi';

export default function() {
    on('http', (request, response) => {
        switch (request.path.petId) {
            case 2:
                response.data.name = 'Betty';
            case 9:
                response.statusCode = 404;
        }
    });
}

🖥️ Dashboard

Mokapi’s dashboard lets you visualize your mock APIs. View requests and responses in real-time, generate and validate sample data for testing.

Mokapi Web UI

🧪 Learn by Example

Explore tutorials that walk you through mocking different protocols and scenarios:

More examples are available on mokapi.io/resources

📚 Documentation

☕ Support

Show your love for Mokapi and support the project by grabbing some cool merch!
Visit the Mokapi Merchandise Store 🔥

If you like Mokapi, consider buying me a coffee:

Buy Me A Coffee

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.