An open API service indexing awesome lists of open source software.

https://github.com/jawherkl/api-design

Welcome to the API Design Study Repository! This project is a hands-on exploration of API-design, covering REST API, GraphQL, and gRPC.
https://github.com/jawherkl/api-design

api-design graphql grpc javascript rest-api soap webhook websocket

Last synced: 11 months ago
JSON representation

Welcome to the API Design Study Repository! This project is a hands-on exploration of API-design, covering REST API, GraphQL, and gRPC.

Awesome Lists containing this project

README

          

# API Design Study Repository 🚀

![Repository Size](https://img.shields.io/github/repo-size/JawherKl/api-design)
![Last Commit](https://img.shields.io/github/last-commit/JawherKl/api-design)
![Issues](https://img.shields.io/github/issues-raw/JawherKl/api-design)
![Forks](https://img.shields.io/github/forks/JawherKl/api-design)
![Stars](https://img.shields.io/github/stars/JawherKl/api-design)

![api-design](https://github.com/JawherKl/api-design/blob/main/docs/images/api-design.gif)

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**.

---

## 📂 Project Structure

```
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
```

---

## ✨ Features

- **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.

---

## 🌐 Frameworks Covered

- **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.

---

## 🚀 Getting Started

### Prerequisites

Ensure you have the following installed:
- **Node.js**
- **Go**
- **PHP**
- **Java** (with Maven)
- **Docker** (for optional containerized services)

### Setup

1. Clone the repository:
```bash
git clone https://github.com/JawherKl/api-design-study.git
```

2. Navigate to a specific API type and framework:
```bash
cd api-design-study/rest-api/nodejs
```

3. Install dependencies and start the server:
```bash
npm install
npm start
```

---

## 📚 Documentation

- [REST API Design](docs/REST-API.md)
- [GraphQL API Design](docs/GraphQL.md)
- [gRPC API Design](docs/gRPC.md)
- [SOAP API Design](docs/SOAP.md)
- [webhook API Design](docs/Webhook.md)
- [websocket API Design](docs/Websocket.md)
- [Framework Comparisons](docs/framework-comparisons.md)

---

## 🤝 Contribution

We welcome contributions! Feel free to:
- Fork this repository
- Raise issues
- Submit pull requests to enhance the repository

---

## Stargazers over time 🌟

[![Stargazers over time](https://starchart.cc/JawherKl/api-design.svg?variant=adaptive)](https://starchart.cc/JawherKl/api-design)