아이리스는 빠르고 간편하면서도 완전한 기능을 갖춘 매우 효율적인 Golang 웹 애플리케이션 프레임워크입니다.

다음 웹 사이트 또는 응용 프로그램 인터페이스를 위한 표현력이 풍부하고 사용하기 쉬운 기반이 제공됩니다.

아이리스의 기능

  • HTTP/2 (푸시, 내장 데이터 포함)
  • 미들웨어 (Accesslog, Basicauth, CORS, gRPC, Anti-Bot hCaptcha, JWT, MethodOverride, ModRevision, Monitor, PPROF, Ratelimit, Anti-Bot reCaptcha, Recovery, RequestID, Rewrite)
  • API 버전 관리
  • Model-View-Controller
  • 웹소켓
  • gRPC
  • 자동 HTTPS
  • 어플리케이션을 가장 빠르게 온라인으로 만들기 위한 내장 ngrok 지원
  • 동적 경로 매개 변수가 있는 고유한 라우터로 :uuid, :string, :int와 같은 표준 유형 및 사용자 정의 라우터 생성 지원
  • 압축
  • 뷰 엔진 (HTML, Django, Handlebars, Pug/Jade, 등)
  • 자체 파일 서버 생성 및 자체 WebDAV 서버 호스팅
  • 캐싱
  • 로컬라이제이션 (i18n, 사이트맵)
  • 세션
  • 풍부한 응답 (HTML, 텍스트, Markdown, XML, YAML, 이진, JSON, JSONP, 프로토콜 버퍼, 메시지팩, 내용 협상, 스트림, 서버-전송 이벤트 등)
  • 응답 압축 (gzip, deflate, brotli, snappy, s2)
  • 풍부한 요청 (URL 쿼리, 헤더, 폼, 텍스트, XML, YAML, 이진, JSON, 유효성 검사, 프로토콜 버퍼, 메시지팩 등)
  • 의존성 주입 (MVC, 핸들러, API 라우터)
  • 테스트 슈트

데모

package main

// 패키지 가져오기
import "github.com/kataras/iris/v12"

func main() {
  // 아이리스 인스턴스 정의
  app := iris.New()
  // gzip 압축 미들웨어 사용
  app.Use(iris.Compression)

  // 라우터 설정
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("안녕하세요 <strong>%s</strong>!", "세계")
  })

  // 포트에서 대기
  app.Listen(":8080")
}

성능 테스트

정수로 된 동적 매개 변수와 함께 200,000개의 요청을 보내고 요청 본문으로 JSON을 보내고 응답으로 JSON을 받습니다.

프레임워크 개발 언어 초당 요청 지연 시간 처리량 완료 시간
Iris Go 238,954 521.69us 64.15MB 0.84s
Gin Go 229,665 541.96us 62.86MB 0.87s
Chi Go 228,072 545.78us 62.61MB 0.88s
Echo Go 224,491 553.84us 61.70MB 0.89s
Martini Go 198,166 627.46us 54.47MB 1.01s
Kestrel C# 163,486 766.90us 47.42MB 1.23s
Buffalo Go 102,478 1.22ms 28.14MB 1.95s
Koa Javascript 48,425 2.56ms 15.39MB 4.14s
Express Javascript 23,622 5.25ms 9.04MB 8.41s