GitHub release
GitHub commits since latest release
License
Delphi
Platforms
MARS-curiosity logo
MARS-Curiosity: Delphi용 REST 라이브러리
MARS-Curiosity는 Embarcadero Delphi를 사용하여 REST 서버 및 REST 클라이언트를 구축하기 위한 오픈 소스 (MPL 2.0) 라이브러리입니다. 엔드포인트는 속성(attributes)이 지정된 일반 Delphi 클래스로 구성됩니다 (JAX-RS 스타일). MARS는 Windows와 Linux 환경에서 라우팅, 파라미터 바인딩, JSON 직렬화, JWT 인증, OpenAPI 3 및 호스팅 기능을 처리합니다.
📖 문서: andrea-magni.github.io/MARS · Why MARS? · FAQ · 릴리스 노트
type
TPerson = record
Name: string;
...
curl -H "Authorization: Bearer $TOKEN" http://localhost:8080/rest/default/people/1
주요 기능 (Features)
-
선언적 REST 리소스: [Path], [GET]/[POST]/[PUT]/[PATCH]/[DELETE]/[QUERY], [Produces], [Consumes], 경로/쿼리/헤더/쿠키/폼/바디 파라미터, [Context]를 사용한 의존성 주입(dependency injection).
-
또는 코드 내 라우트: 코드 내 라우트 (Express 스타일): 경로 제약 조건, 그룹, 미들웨어 및 OpenAPI를 갖춘 R.Get<TPerson>('people/{id:int}', ...)와 같은 구문으로 리소스 옆에 라우트를 정의할 수 있습니다.
-
레코드(records), 객체(objects), 배열(arrays) 및 데이터셋(datasets) 간의 JSON 입출력 지원, 애플리케이션별 옵션 제공; YAML 및 XML 작성기(writers)도 지원합니다.
-
보안: JWT 인증 (Bearer 헤더 또는 쿠키, 키 로테이션, 토큰 갱신), 역할 기반 권한 부여 ([RolesAllowed], [Authenticated], [PermitAll], [DenyAll]).
-
코드에서 생성되는 OpenAPI 3 스펙 및 Swagger UI 포함; 그리고 그 반대 방향인 MARSgen: OpenAPI 3.0/3.1 문서, JSON 샘플로부터 Delphi 타입과 MARS 서버(또는 전체 프로젝트)를 생성하며, 서버가 해당 문서와 일치하는지 검사합니다.
-
데이터 접근: FireDAC 및 Devart UniDAC, MyDAC, IBDAC를 사용하여 데이터셋을 JSON, XML 또는 네이티브 형식으로 반환하고, 요청의 파라미터, 트랜잭션, 구성에서 연결 정보를 가져옵니다. FireDAC 클라이언트는 델타(deltas)를 전송합니다.
-
AI 에이전트를 위한 MCP 서버: 역할(roles) 및 OAuth 2.1을 사용하여 Delphi 메서드와 데이터를 Model Context Protocol 도구, 리소스, 프롬프트 (Claude, ChatGPT, Copilot, 로컬 모델)로 노출합니다.
-
서버 전송 이벤트(Server-sent events), HTML 및 템플릿 (WebStencils, htmx), 정적 파일.
-
로깅(Logging): Grafana/Loki용 JSON 요청/응답 로그; 모든 요청에 대한 클라이언트 측 로깅.
-
클라이언트 라이브러리(Client library): MARS 및 기타 모든 REST API를 호출하기 위한 RAD 컴포넌트, 타입이 지정된 레코드(typed records), 토큰, 비동기 호출(async calls), FireDAC, UniDAC, MyDAC 및 IBDAC와의 데이터셋 동기화.
-
호스팅(Hosting): 콘솔, VCL/FMX, Windows 서비스, Linux 데몬 (systemd, Docker), IIS ISAPI, Apache 모듈, FastCGI; HTTPS를 사용하는 Indy 또는 Delphi Cross Socket. 배포(Deployment)를 참조하세요.
-
도구(Tooling): IDE 통합을 통한 설정, TMS Smart Setup, MARSCmd 프로젝트 부트스트래퍼 (또한 명령줄에서), AI 코딩 에이전트를 위한 Agent Skills.
Delphi 10.4 Sydney부터 Delphi 13 Florence까지.
설치(Installation)
- 최신 릴리스 설정 실행
- 또는 TMS Smart Setup 사용 (Delphi 10.4 이상):
tms server-enable community true를 실행한 다음, tms install andreamagni.mars를 실행합니다.
- 자세한 정보는 문서 페이지에서 확인하세요.
시작하기
MARSCmd로 초기 구축하기
MARSMARSCmd를 실행하고, 템플릿(Indy가 포함된 MARSTemplate, Delphi Cross Socket이 포함된 MARSTemplateDCS, Indy 및 코드 내 라우트가 포함된 MARSTemplateRoutes)과 이름을 선택하면, 여러 가지 버전의 서버, 클라이언트, 테스트 프로젝트를 포함하는 준비된 프로젝트 그룹을 얻게 됩니다. 그런 다음 첫 번째 서버 만들기를 따르세요.
AI 에이전트 스킬
MARS는 Claude Code 및 기타 AI 코딩 에이전트를 위한 에이전트 스킬을 제공합니다: MARS를 아는 AI 비서와 함께 새 서버를 구축하거나 REST API(리소스, JWT, FireDAC 및 Devart 데이터셋, SSE, MCP 등)를 개발할 수 있습니다. Claude Code에서 실행하는 명령어는 다음과 같습니다:
/plugin marketplace add andrea-magni/MARS
/plugin install mars-curiosity@mars
수동 설치 및 사용 예시를 보려면 Skills 폴더 또는 문서 페이지를 참조하세요.
문서화
- 📖 MARS 문서 사이트 — 가이드, 서버 및 클라이언트 참고 자료, 기능, 배포 및 데모
- AI 도구용:
llms.txt (인덱스) 및 llms-full.txt (전체 문서를 하나의 파일에)
- 데모 (
Demos 폴더): 템플릿, MCP 서버, SSE, JWT 토큰 갱신, OTP, WebStencils, htmx, 에러 객체
- Andrea Magni 블로그
- Andrea Magni 유튜브 채널
문서 사이트는 docs/ 폴더에서 VitePress를 사용하여 구축되었으며, 변경될 때마다 GitHub Pages에 자동으로 게시됩니다.
포럼
공식 MARS Curiosity 포럼은 [Delphi-Praxis International]에서 이용할 수 있습니다.
기여
이 프로젝트를 지원해 주시면 감사하겠습니다. 매우 쉽고, Git 실력도 향상시킬 수 있습니다.
감사 인사
코드의 대부분은 작성자(Andrea Magni)가 작성했으며, Nando Dessena, Stefan Glienke, Davide Rossi 등의 상당한 기여가 있었습니다. 제 고객 중 일부는 실제로 베타 테스터이자 얼리 어답터 역할을 해 주었습니다. 신뢰와 노력에 깊이 감사드립니다.
관련 링크
Embarcadero Delphi는 현대적이고 강력하며 효과적인 언어이자 개발 도구입니다. 다음 링크에서 더 자세히 알아보세요:
저작권
- Delphi 스타일의 헬멧 아이콘은 Embarcadero Technologies의 상표입니다.