Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Kong | 34,973 | 10 hours ago | 236 | apache-2.0 | Lua | |||||
🦍 The Cloud-Native API Gateway | ||||||||||
Tyk | 8,491 | 3 | 10 hours ago | 486 | April 06, 2022 | 283 | other | Go | ||
Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols | ||||||||||
Ocelot | 7,653 | 152 | 100 | 11 hours ago | 518 | January 20, 2022 | 612 | mit | C# | |
dotnet 7.0 API Gateway | ||||||||||
Lura | 5,585 | 77 | 2 days ago | 49 | June 08, 2022 | 45 | other | Go | ||
Ultra performant API Gateway with middlewares. A project hosted at The Linux Foundation | ||||||||||
Easegress | 5,430 | 10 hours ago | 30 | June 28, 2022 | 52 | apache-2.0 | Go | |||
A Cloud Native traffic orchestration system | ||||||||||
Serverless Express | 4,835 | 660 | 159 | 15 days ago | 33 | December 06, 2020 | 76 | apache-2.0 | JavaScript | |
Run Node.js web applications and APIs using existing application frameworks on AWS #serverless technologies such as Lambda, API Gateway, [email protected], and ALB. | ||||||||||
Spring Cloud Gateway | 4,036 | 393 | 22 | 2 days ago | 35 | September 06, 2022 | 434 | apache-2.0 | Java | |
A Gateway built on Spring Framework and Spring Boot providing routing and more. | ||||||||||
Gloo | 3,795 | 2 | 5 | 2 days ago | 1,124 | September 23, 2022 | 1,350 | apache-2.0 | Go | |
The Feature-rich, Kubernetes-native, Next-Generation API Gateway Built on Envoy | ||||||||||
Claudia | 3,709 | 193 | 29 | a year ago | 122 | March 17, 2022 | 14 | mit | JavaScript | |
Deploy Node.js projects to AWS Lambda and API Gateway easily | ||||||||||
Manba | 3,219 | 3 months ago | 13 | December 05, 2018 | 14 | apache-2.0 | Go | |||
HTTP API Gateway |
The WSO2 API Microgateway (MGW) is a Cloud Native API Gateway which can be used to expose one or many microservices as APIs.
The WSO2 API Microgateway is designed to expose heterogeneous microservices as APIs to end consumers using a common API interface based on the Open API Specification. This helps expose microservices using a unified interface to external consumers, internal consumers and partners. It applies the common quality of service attributes on API requests such as security, rate limiting and analytics and also offers a wide range of features which helps organizations to deploy APIs microservice architectures efficiently.
Let's expose the publicly available petstore service via microgateway.
Download the latest WSO2 API Microgateway release from the product official page or github release page and extract it. For Docker container based usages, downloading only the toolkit will be sufficient.
Add the 'bin' directory of the extracted distributions to your PATH variable.
export PATH=$PATH:<TOOLKIT_EXTRACTED_LOCATION>/bin
export PATH=$PATH:<TOOLKIT_EXTRACTED_LOCATION>/bin
export PATH=$PATH:<RUNTIME_EXTRACTED_LOCATION>/bin
First we need to initialize a project by adding the open API definition of the petstore service. We'll name the project as "petstore". To initialize the project, execute following command.
micro-gw init petstore -a https://petstore.swagger.io/v2/swagger.json
The project is now initialized with the open api definition of the petstore service.
Next, Lets build the project and create a microgateway instance.
micro-gw build petstore --docker-image petstore:v1 --docker-base-image wso2/wso2micro-gw:3.2.1
micro-gw build petstore
Start the gateway.
docker run -d -p 9090:9090 -p 9095:9095 petstore:v1
gateway <PROJECT_LOCATION>/target/petstore.jar
Now we can test our API. Since APIs on the MGW are by default secured. We need a valid token or key in order to invoke the API. MGW can issue API keys on its own. Execute the command below to get a API key from microgateway. Following command will set the api key into TOKEN
variable.
TOKEN=$(curl -X get "https://localhost:9095/apikey" -H "Authorization:Basic YWRtaW46YWRtaW4=" -k)
We can now invoke the API running on the microgateway using cURL as below.
curl -X GET "https://localhost:9095/v2/pet/1" -H "accept: application/json" -H "api_key:$TOKEN" -k
Below is a list of most noticeable features out of many other features MGW hosts.
It also has the following characteristics that makes it a perfect fit for microservice architectures
Exposing APIs with MGW involves in two main phases.
MGW uses OpenApi specification and a set of MGW specific OpenApi vendor extensions to define an API. Users can use these extensions to enable/disable different gateway features on an API. A sample can be found in here. Dev phase involves defining the required API(s) using these extensions. This phase can involve below basic steps.
Once the project is ready for the deployment, MGW can produce three types of main deployment artifacts. Out of these three types, you can select which artifact(s) you need for the required deployment.
build
command can be configured to produce a docker image required to create a docker installation.build
command can be configured to produce kubernetes artifacts required to create a kubernetes installation.MGW runtime is mostly implemented with ballerina-lang. However the toolkit is implemented with Java. You can contribute your code to both runtime and toolkit.
Contribution is not limited to the code. You can help the project with identifying issues, suggesting documentation changes etc.
For more information on how to contribute, read our contribution guidelines.