Площадка C# dotnet web API (много примеров + развертывание Docker)
Контекст
Часто нам необходимо публиковать микросервисы RESTful, хорошо документированные и развернутые в контейнерах Docker (Kubernetes, Google Cloud Run, бессерверные платформы и т. д.).
В этом проекте игровой площадки показано множество функций, которые вы можете повторно использовать в своих проектах.
Это действующий проект, и он, скорее всего, будет часто обновляться.
Что делает это приложение?
- Приложение делает много вещей. Многие конечные точки веб-API открываются при запуске проекта.
- См. документацию (страница по умолчанию при запуске проекта).
Стек и основные темы в проекте
Веб-приложение .NET 6.0
- С#
- ОТДЫХ ВебAPI
- Объекты и парсер Json
- Манипулирование кодами возврата (HTTP StatusCodes)
- Кэширование памяти
- Генерация хеширования и проверка хеша
- Расширения/переопределение собственных типов данных C#
Докер
- сборка докера
- запуск докера
- Docker-контейнер HTTP/https-взаимодействие
Об авторе и лицензии
- Эрик — старший бэкэнд-разработчик и архитектор.
- Вы можете связаться с Эриком по электронной почте [email protected] или Linkedin https://www.linkedin.com/in/seixaserick/.
- Другие репозитории Github: https://github.com/seixaserick/.
- Лицензия MIT (более подробную информацию см. в файле LICENSE.txt)
Как запустить этот проект
Клонировать репозиторий
Если вы уже установили Git для Windows, выполните команды ниже:
git clone https://github.com/seixaserick/dotnet-webapi-playground
cd dotnet-webapi-playground
Как запустить этот проект в контейнерах Docker
Если вы уже установили Docker Desktop, просто выполните следующие действия:
Создание образа докера
Чтобы создать образ Docker, запустите командную строку ниже в командной строке каталога проекта:
docker build -t dotnet-webapi-playground -f Dockerfile .
Запуск приложения в Docker-контейнере
Настройте сервер Redis в Docker, если у вас нет экземпляра Redis
docker run --name redis -d -p 6379:6379 -e REDIS_PASSWORD=supersecretpassword --restart always redis:latest /bin/sh -c 'redis-server --appendonly yes --requirepass ${REDIS_PASSWORD}'
Чтобы запустить образ в контейнере Docker и взаимодействовать с ним, выполните командную строку ниже:
docker run -it -p 1977:80 --name=dotnet-webapi-playground --restart=always dotnet-webapi-playground
Открыть: http://localhost:1977/square/8 (без https)
Чтобы остановить контейнер, запустите командную строку ниже:
docker stop dotnet-webapi-playground
Чтобы удалить контейнер (даже если он запущен), запустите командную строку ниже:
docker rm --force dotnet-webapi-playground
Как собрать и запустить без Docker (Windows)
После клонирования репозитория вы можете открыть проект с помощью Visual Studio. Создайте или просто отладьте его, нажав F5
.
Чтобы скомпилировать и запустить его в Windows (требуется Visual Studio)
Откройте файл решения dotnet-webapi-playground.sln
в Visual Studio, затем нажмите F5
, чтобы запустить проект!
Вынос
- Swagger — отличный генератор документации.
- C# WebApis очень легко запускать внутри контейнеров Docker с оперативной памятью менее 256 МБ.
- Json Parse создан с помощью dotnet простым и легким способом.
- Docker — хороший инструмент для быстрого запуска проектов, не беспокоясь о зависимостях и конфигурациях.
- C# очень похож на другие языки на основе ECMA (Java, Javascript и т. д.).
- Алгоритмы хеширования являются только «односторонними». Вы не можете восстановить входную строку по заданному хешу.
- Коды ответа можно легко настроить в ответе API (пример: HTTP 409 Conflict, HTTP 402 PaymentRequired и т. д.). См. полные коды ответов HTTP.
- Хорошие файлы Markdown README.md могут помочь другим разработчикам понимать, клонировать, запускать и тестировать проекты.
Домашнее задание
- Создайте новую объектную модель в папке «Модели» и создайте новую конечную точку API (метод HTTP GET), чтобы выполнить некоторые вычисления и вернуть этот новый объект.
- Создайте новое расширение типа данных C# и используйте его для управления собственными типами данных. Пример. Создайте
string extension
для выполнения .ToBase64Encode()
, затем попробуйте inputString.ToBase64Encode();
вместо этого функциональный подход. - Создайте новую конечную точку POST API, чтобы получить какой-то объект и что-то с ним сделать, вернув результат.
- Попробуйте реализовать распределенный кеш Redis в какой-нибудь конечной точке.