프로젝트 소개
Iris는 Go 언어를 위한 웹 프레임워크입니다. README는 영어로 작성되었으며, 현재의 v12 라인과 계획 중인 v14 릴리스의 프리뷰를 다룹니다.
v12의 핵심 기능:
- 서버 푸시 및 임베디드 데이터를 포함한 HTTP/2 지원.
- :uuid, :string, :int와 같은 표준 타입의 동적 경로 파라미터를 수용하고 사용자 정의 파라미터 타입을 정의할 수 있는 라우터.
- 액세스 로그, 기본 인증, CORS, gRPC, hCaptcha 및 reCaptcha 봇 방지 체크, JWT, 메서드 오버라이드, 모니터, pprof, 속도 제한, 복구, 요청 ID 및 리라이트와 같은 내장 미들웨어.
- API 버전 관리, Model-View-Controller(mvc 패키지) 및 MVC, 핸들러, API 라우터를 위한 의존성 주입.
- WebSockets, gRPC 및 자동 HTTPS.
- 로컬 앱을 인터넷에 노출하기 위한 내장 ngrok 지원.
- 응답 압축(gzip, deflate, brotli, snappy, s2) 및 Compression 미들웨어.
- HTML, Django, Handlebars, Pug/Jade를 포함한 뷰 엔진.
- 사용자 정의 파일 서버 및 WebDAV 서버.
- 캐시, 국제화(i18n, sitemap), 세션 및 테스트 스위트.
- 풍부한 응답: HTML, 텍스트, Markdown, XML, YAML, 바이너리, JSON, JSONP, Protocol Buffers, MessagePack, 콘텐츠 협상, 스트리밍 및 서버 전송 이벤트(SSE).
- 풍부한 요청 바인딩: URL 쿼리, 헤더, 폼, 텍스트, XML, YAML, 바이너리, JSON, 검증, Protocol Buffers 및 MessagePack.
- README의 예제 코드는 iris.New()로 생성된 최소 앱, app.Get을 통해 등록된 라우트, 그리고 app.Listen(":8080")을 보여줍니다.
README에 따르면 _examples 디렉토리에 285개의 예제가 있으며, 커뮤니티 채팅 및 후원 페이지 링크가 제공됩니다.
계획 중인 v14 (프로젝트 역사상 가장 큰 릴리스로 설명되며, 공개 출시일은 없으며 새로운 임포트 경로를 사용하여 v12 코드에 영향을 주지 않음):
- CORS, 압축, 액세스 로깅, 헬스 엔드포인트, 에러 매핑, 서비스 및 API 그룹을 강제된 단계 순서에 따라 하나의 체인으로 연결하는 컴파일 체크 기반 애플리케이션 빌더(iris.NewBuilder).
- 디코딩, 검증 및 에러 렌더링을 핸들러 본문 밖으로 옮기는 rest.ReadJSON[T], rest.OK, rest.NoContent, rest.Count, rest.Created, rest.Paginated와 같은 rest 헬퍼.
- 도메인 에러를 HTTP 응답 매핑으로 한 번만 선언하고, 로깅 및 JSON 또는 뷰로 렌더링하기 위한 선택적 컬렉터를 제공하는 rest/errors 패키지.
- MVC를 넘어선 의존성 주입 지원. Build() 중에 실행되는 Init(ctx) 훅과 종료 시 닫히는 닫기 가능한 리소스를 제공하며, hero 패키지는 dep 및 rest로 대체됩니다.
- 패키지 이동: sessions, cache, websocket, i18n, view 및 versioning은 미들웨어가 됩니다. mvc는 fileserver, sitemap, apigraph 컨트롤러와 함께 controller 아래로 이동하며, 뷰 엔진 구현체는 iris-contrib/views로 이동합니다.
- httpcost(요청당 시간, 메모리 및 CPU), bodylimit, compress, counter, referrer, geolocation, ipaccess, servertiming 등 약 30개의 번들 미들웨어.
- iris.Options 부분 리터럴을 통한 설정. Bind는 SERVER_CONFIG 환경 변수나 파일에서 YAML을 로드합니다.
- Party를 Router로, ctx.URLParam을 ctx.Query().Get으로 변경하는 등의 이름 변경 사항이 마이그레이션 가이드에 문서화되어 있습니다.
- 기본적으로 보안이 강화된 세션 쿠키(Secure, SameSite=Lax), 모든 읽기 경로에 대한 요청 본문 제한, 그리고 기존에 설명된 속도 제한 및 Logout 이슈에 대한 수정.
- 저장소 내 23장 분량의 책 형태의 문서, 시작하기 튜토리얼, v12 마이그레이션 가이드 및 생성된 위키가 계획되어 있습니다.
README는 Iris를 빠르고 단순하면서도 기능이 풍부한 프레임워크로 정의하며, 장기적인 커뮤니티 지원을 강조합니다. 또한 직접적인 측정치를 보고하는 대신 외부 벤치마크 및 추천 페이지 링크를 제공합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.