Oat++는 C++용 최신 웹 프레임워크입니다. 효과적인 생산 수준 개발에 필요한 모든 구성 요소가 완전히 로드되어 포함되어 있습니다. 또한 가볍고 메모리 사용량도 적습니다.
1.3.0-latest
태그를 사용하세요. 버전 1.4.0
의 뉴스 및 기능에 대한 변경 로그를 따르십시오.
GitHub 스폰서 페이지를 통해 Oat++ 지원을 고려해 보세요.
@Atarasin의 oatpp-mysql
@lilltiger의 oatpp-mariadb
시작하기
Unix/Linux용 빌드
Windows용 빌드
예
이 프로젝트를 유지하고 개발하려면 상당한 시간과 자원이 필요합니다. 즐겨 사용하고 지속적인 개발을 지원하고 싶다면 GitHub 후원자를 통해 지원해 보세요.
GitHub에서 후원자가 되어보세요
크든 작든 모든 기여는 프로젝트를 지속적으로 개선하고 유지하는 데 도움이 됩니다. 귀하의 지원에 감사드립니다!
웹사이트
지원되는 플랫폼
최신 벤치마크: 500만 개의 WebSocket
Oat++에 기여
바로가기:
Oat++ 고급 개요 - Oat++ 기능에 대한 간략한 개요를 확인하세요.
예제 프로젝트 - Oat++로 구축된 "CRUD" 서비스(UserService)의 전체 예제입니다. REST + Swagger-UI + SQLite.
자세한 내용은 ApiController를 참조하세요.
ENDPOINT_INFO(getUserById) { info->summary = "userId로 한 명의 사용자 가져오기"; info->addResponse<Object<UserDto>>(Status::CODE_200, "application/json"); info->addResponse<Object<StatusDto>>(Status::CODE_404, "application/json"); info->addResponse<Object<StatusDto>>(Status::CODE_500, "application/json"); info->pathParams["userId"].description = "사용자 식별자"; }ENDPOINT("GET", "users/{userId}", getUserById, PATH(Int32, userId)) { return createDtoResponse(Status::CODE_200, m_userService.getUserById(userId)); }
자세한 내용은 Oat++ ORM을 참조하세요.
QUERY(createUser, "INSERT INTO 사용자(사용자 이름, 이메일, 역할) VALUES (:username, :email, :role);", PARAM(oatpp::String, 사용자 이름), PARAM(oatpp::문자열, 이메일), PARAM(oatpp::Enum<UserRoles>::AsString, 역할))
Gitter - Oat++ 개발자 및 다른 Oat++ 사용자와 대화하세요.
트위터 - 트위터에서 Oat++를 팔로우하세요.
Reddit - Oat++ 하위 레딧을 팔로우하세요.
StackOverflow(신규) - 질문을 게시하세요.
REST 서비스 - Oat++로 구축된 "CRUD" 서비스(UserService)의 전체 예입니다. REST + Swagger-UI + SQLite.
REST 클라이언트 - Retrofit과 유사한 클라이언트 래퍼(ApiClient)를 사용하는 방법과 작동 방식에 대한 예제 프로젝트입니다.
Can Chat - 수만 명의 사용자를 위한 기능이 완비된 회의실 기반 채팅입니다. 클라이언트 플러스 서버.
WebSocket - oatpp WebSocket 예제 모음입니다.
YUV 웹소켓 스트림 - 웹소켓을 사용하여 V4L 장치(iE 웹캠)에서 YUV 이미지 스트림을 생성하는 방법에 대한 예제 프로젝트입니다.
SQLite - "CRUD" 서비스의 완전한 예입니다. REST + Swagger-UI + SQLite.
PostgreSQL - PostgreSQL에 정보를 저장하는 프로덕션급 엔터티 서비스의 예입니다. Swagger-UI 및 구성 프로필을 사용합니다.
MongoDB - oatpp-mongo mondule을 사용하여 MongoDB로 작업하는 방법에 대한 예제 프로젝트입니다. 프로젝트는 기본 CRUD 및 Swagger-UI를 갖춘 웹 서비스입니다.
예제-IoT-Hue - Amazon Alexa 또는 Google Echo와 같은 Hue 호환 스마트 홈 장치에서 검색하고 제어할 수 있는 Philips Hue 호환 REST-API를 생성하는 방법을 보여주는 예제 프로젝트입니다.
HTTP 라이브 스트리밍 서버 - Oat++ 비동기 API를 사용하여 HLS 스트리밍 서버를 구축하는 방법에 대한 예제 프로젝트입니다.
YUV 웹소켓 스트림 - 웹소켓을 사용하여 V4L 장치(iE 웹캠)에서 YUV 이미지 스트림을 생성하는 방법에 대한 예제 프로젝트입니다.
Libressl을 사용한 TLS - 보안 연결을 설정하고 HTTPS를 통해 제공하는 방법에 대한 예제 프로젝트입니다.
Consul 통합 - oatpp::consul::Client 사용 방법에 대한 예제 프로젝트입니다. 영사 통합.
마이크로서비스 - Oat++로 마이크로서비스를 구축하는 방법에 대한 예제 프로젝트와 단일화 기술을 사용하여 해당 마이크로서비스를 통합하는 방법에 대한 예제입니다.
비동기 서비스 - 비동기 API를 사용하여 다수의 동시 연결을 처리하는 방법에 대한 예제 프로젝트입니다.
"귀리"는 가볍고 유기농이며 녹색입니다. 별다른 노력 없이 쉽게 조리하여 섭취할 수 있습니다.
"++"는 C++의 "무언가"라는 힌트를 제공합니다.
Oat++는 임베디드 장치에서 실행되는 REST API 구축부터 마이크로서비스 및 고부하 클라우드 애플리케이션 구축에 이르기까지 다양한 목적으로 사용됩니다.
그러나 대부분의 사용 사례는 IoT 및 로봇 공학 에 있는 것으로 보입니다.
이론적으로 Oat++는 스레드 와 네트워크 스택이 있는 모든 곳으로 쉽게 이식될 수 있습니다. 비교적 적은 노력만 추가하면 제거한 양과 최종 바이너리 크기에 따라 거의 모든 곳으로 이식할 수 있습니다.
자세한 내용은 지원되는 플랫폼을 참조하세요.
C/C++ std-lib 및 oatpp 버전에 따라 약 1Mb 입니다.
가능하다면 항상 Simple API를 선택하세요. Simple API가 더욱 발전되어 코드가 더욱 깔끔해졌습니다.
Async API는 높은 동시성 수준에서 실행되는 소규모의 특정 작업을 위해 설계되었습니다. 예:
다수의 동시 사용자(1K 사용자 이상)에게 파일 다운로드를 제공합니다.
다수의 클라이언트(1K 이상)로 스트리밍합니다.
웹소켓 채팅 서버.
다른 모든 목적에는 간단한 API를 사용하십시오.