Welcome to the API Design Study Repository! This project is a hands-on exploration of API design patterns, covering REST API, GraphQL, gRPC, SOAP, Webhook and Websocket implementations across four popular frameworks: Node.js, Golang, Symfony, and Spring Boot.
api-design-study/
│── docs/
│ ├── images/
│ |── framework-comparison.md
│ ├── GraphQL.md
│ ├── gRPC.md
│ ├── REST-API.md
| ├── SOAP.md
│ ├── Webhook.md
│ └── Websocket.md
├── graphql/
│ ├── golang/
│ ├── nodejs/
│ |── spring-boot/
│ └── symfony/
├── grpc/
│ ├── golang/
│ ├── nodejs/
│ |── spring-boot/
│ └── symfony/
├── rest-api/
│ ├── golang/
│ ├── nodejs/
│ |── spring-boot/
│ └── symfony/
├── soap/
│ ├── golang/
│ ├── nodejs/
│ |── spring-boot/
│ └── symfony/
├── webhook/
│ ├── golang/
│ ├── nodejs/
│ |── spring-boot/
│ └── symfony/
├── websocket/
│ ├── golang/
│ ├── nodejs/
│ |── spring-boot/
│ └── symfony/
└── README.md
- REST API: Comprehensive study of HTTP methods, request/response handling, and best practices.
- GraphQL: Efficient data retrieval with GraphQL schemas, resolvers, and queries.
- gRPC: Implementation of Protobuf-based gRPC server-client communication.
- Webhook: Automated HTTP callbacks for real-time event notifications.
- WebSocket: Full-duplex communication channels for real-time data exchange over a single TCP connection.
- Node.js: JavaScript runtime for building scalable APIs.
- Golang: Lightweight and fast language for robust API services.
- Symfony: PHP framework with structured components and rich tools.
- Spring Boot: Java-based framework tailored for microservices and enterprise APIs.
Ensure you have the following installed:
- Node.js
- Go
- PHP
- Java (with Maven)
- Docker (for optional containerized services)
-
Clone the repository:
git clone https://github.com/JawherKl/api-design-study.git
-
Navigate to a specific API type and framework:
cd api-design-study/rest-api/nodejs
-
Install dependencies and start the server:
npm install npm start
- REST API Design
- GraphQL API Design
- gRPC API Design
- SOAP API Design
- webhook API Design
- websocket API Design
- Framework Comparisons
We welcome contributions! Feel free to:
- Fork this repository
- Raise issues
- Submit pull requests to enhance the repository