All Projects → apssouza22 → modern-api-management

apssouza22 / modern-api-management

Licence: MIT license
A modern approach to manage APIs effectively using Protobuf

Programming Languages

shell
77523 projects
go
31211 projects - #10 most used programming language
java
68154 projects - #9 most used programming language
Dockerfile
14818 projects
Makefile
30231 projects

Projects that are alternatives of or similar to modern-api-management

Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (+472.22%)
Mutual labels:  protobuf, grpc
compatip
A simple tool to ensure compatibility between microservices
Stars: ✭ 13 (-63.89%)
Mutual labels:  protobuf, grpc
Clay
Proto-first minimal server platform for gRPС+REST+Swagger APIs
Stars: ✭ 212 (+488.89%)
Mutual labels:  protobuf, grpc
Buildbuddy
BuildBuddy is an open source Bazel build event viewer, result store, and remote cache.
Stars: ✭ 182 (+405.56%)
Mutual labels:  protobuf, grpc
protoactor-go
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 4,138 (+11394.44%)
Mutual labels:  protobuf, grpc
Grpc Kotlin
gRPC with Kotlin Coroutines
Stars: ✭ 190 (+427.78%)
Mutual labels:  protobuf, grpc
neofs-api-go
NeoFS API Golang repository contains implementation of core NeoFS structures that can be used for integration with NeoFS.
Stars: ✭ 14 (-61.11%)
Mutual labels:  protobuf, grpc
Flutter Grpc Tutorial
[Tutorial] Asynchronous Flutter chat client with Go chat server which are powered by gRPC (simple and streaming)
Stars: ✭ 167 (+363.89%)
Mutual labels:  protobuf, grpc
FSharp.GrpcCodeGenerator
A protoc plugin to enable generation of F# code
Stars: ✭ 61 (+69.44%)
Mutual labels:  protobuf, grpc
protoc-plugin
A protoc compiler plugin for Clojure applications
Stars: ✭ 28 (-22.22%)
Mutual labels:  protobuf, grpc
Go Grpc Examples
This repo contains examples and implementations of different types of GRPC services and APIs using Golang.
Stars: ✭ 180 (+400%)
Mutual labels:  protobuf, grpc
grpc-jwt-spring-boot-starter
Spring boot starter for gRPC framework with JWT authorization
Stars: ✭ 24 (-33.33%)
Mutual labels:  protobuf, grpc
Rules proto
Modern bazel build rules for protobuf / gRPC
Stars: ✭ 179 (+397.22%)
Mutual labels:  protobuf, grpc
Istio Micro
istio 微服务示例代码 grpc+protobuf+echo+websocket+mysql+redis+kafka+docker-compose
Stars: ✭ 194 (+438.89%)
Mutual labels:  protobuf, grpc
Makeaplan public
【制定一个计划】是一个目标规划应用,通过最直接,最清晰的方式帮助你记录和追踪自己的计划,辅助你达成自己的目标。
Stars: ✭ 174 (+383.33%)
Mutual labels:  protobuf, grpc
pronto
Clojure support for protocol buffers
Stars: ✭ 66 (+83.33%)
Mutual labels:  protobuf, protobuf-java
Go Grpc Example
An example of gRPC
Stars: ✭ 153 (+325%)
Mutual labels:  protobuf, grpc
Kratos
A modular-designed and easy-to-use microservices framework in Go.
Stars: ✭ 15,844 (+43911.11%)
Mutual labels:  protobuf, grpc
qtprotobuf
Protobuf generator and bindings for Qt framework
Stars: ✭ 138 (+283.33%)
Mutual labels:  protobuf, grpc
grphp
PHP gRPC Framework
Stars: ✭ 19 (-47.22%)
Mutual labels:  protobuf, grpc

Modern API management

This project tries to provide a modern approach to manage APIs combining Protobuf and OpenAPI specification.

The project tries to address the following challenges:

  • Contract definitions
  • Contract compatibility enforcement
  • Contract versioning
  • OpenAPI definition generation
  • Stub generation to different languages
  • Client SDK generation to different languages
  • Swagger-UI to display the HTTP API
  • API management guideline
  • ETC


Free Advanced Java Course

I am the author of the Advanced Java for adults course. This course contains advanced and not conventional lessons. In this course, you will learn to think differently from those who have a limited view of software development. I will provoke you to reflect on decisions that you take in your day to day job, which might not be the best ones. This course is for middle to senior developers and we will not teach Java language features but how to lead complex Java projects.

This course's lectures are based on a Trading system, an opensource project hosted on my Github.


Get started

make generate
make install

Use the built Docker image

We are sharing a docker image with everything required by this project

docker run -it -v "$(pwd):/workspace" -v "$HOME"/.m2:/root/.m2  -w /workspace   apssouza/proto-api-manager
make generate
make install

If you prefer to build a local image docker build . -f assets/Dockerfile -t apssouza/proto-api-manager

Stub generation

Generate stub code to different languages(Javascript, Java, Golang)

./bin/go-gen.sh
./bin/java-gen.sh
./bin/js-gen.sh ./protos 0.0.12

Code distribution

Share the API generated code to different languages(Java, Golang)

./bin/go-deploy.sh
./bin/js-deploy.sh ./protos
./bin/java-package.sh
./bin/java-install.sh

OpenAPI definition

Reads protobuf service definitions and generates service definition files. These files can then be used by the Swagger-UI project to display the API and Swagger-Codegen to generate clients in various languages.

./bin/swagger-gen.sh
./bin/swagger-assets-package.sh

HTTP Client SDKs

Use the service definition files along with Swagger-Codegen to generate HTTP clients for the service in Java and Golang.

./bin/gen-sdk-clients.sh

HTTP Client UI

Use the service definition files along with Swagger-UI project to display the HTTP API version

Swagger-UI

Quality assurance

Guarantee the quality of the API by using the project Buf to ensure that the API follows a code style

This is done using Github actions. Check out the .github/workflows/ci.yml

Back compatibility

Guarantee back-compatibility of the API by using the project Buf to ensure that the API changes doesn't break the existing contract.

This is done using Github actions. Check out the .github/workflows/ci.yml

API management guideline

Check out a guideline to help manage the APIs in a microservice environment

Microservice example

Check out 2 microservices examples inside ./services to get inspired. Book microservice is in Golang and Shelf microservice is in Java.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].