랙(Web 서버 인터페이스)
Rack (web server interface)![]() | |
원저작자 | 레아 노이키르첸 |
---|---|
개발자 | James Tucker, Josh Peek, Jose Valim, Michael Fellinger, Aaron Patterson, Santiago Pastrino, Constantin Haase |
안정된 릴리스 | 2.2.3 / 2020년 6월 [1] , 전( |
저장소 | |
운영 체제 | 크로스 플랫폼 |
유형 | 미들웨어 |
면허증. | MIT 라이선스 |
웹 사이트 | rack.github을 클릭합니다.이오 ![]() |
Rack은 Ruby 프로그래밍 언어로 개발된 웹 서버와 웹 애플리케이션 간의 모듈식 인터페이스입니다.Rack을 사용하면 웹 프레임워크 및 미들웨어용 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)는 HTTP 요구 및 응답을 처리하는 단일 메서드로 정리됩니다.
랙은 Ruby on Rails 및 Sinatra와 같은 많은 Ruby 웹 프레임워크와 라이브러리에서 사용됩니다.루비 보석으로 구입할 수 있습니다.많은 Ruby 애플리케이션은 "랙 준거"[2]라고 불립니다.
랙은 JavaScript(jack.js), Clojure,[4] Perl(Plack), Common Lisp(Clack)[5] 및 에서 동일한[3] 프레임워크를 구현했습니다.NET(OWIN)[6]
개요
랙 어플리케이션의 특징은 어플리케이션오브젝트가 콜 메서드에 응답하는 것입니다.콜 메서드는 환경 개체를 인수로 받아들여 Rack 응답 개체를 반환합니다.
환경[7]
콜 메서드에 의해 인수로서 받아들여지는 환경은 다음 오브젝트를 참조합니다.
a) HTTP 요구에 관한 정보
여기에는 다음과 같은 정보가 포함됩니다.
- HTTP 요구 방식
- URL 정보(어플리케이션으로 향하는 정보, 응용 프로그램의 실제 위치로 향하는 정보, 쿼리 문자열)
- 서버 이름 및 서버 포트와 같은 서버 정보
- 클라이언트로부터 수신한HTTP 메타 변수
b) 랙 고유의 정보
여기에는 다음과 같은 정보가 포함됩니다.
- 실행 중인 랙어플리케이션 버전
- 사용되는 URL 스킴(수신된 요구가 http 또는 https인 경우).
- 미가공 HTTP 데이터
- 오류를 보고하기 위한 Ruby 개체입니다.
- 응용 프로그램 개체가 다른 스레드 또는 프로세스에서 동시에 호출되는지 여부 등의 정보입니다.
- 서버의 기대치와 기능(접속 하이잭을 위한 서버의 기능)에 관한 정보.
애플리케이션을 미들웨어로 사용하는 경우, 세션 정보, 로깅 기능, 읽기 및 쓰기에 사용할 수 있는 데이터 크기에 대한 정보 등을 제공하는 개체가 환경에 존재할 수 있습니다.이 외에도 서버는 환경에 자체 데이터를 저장할 수 있습니다.
랙[7] 응답
랙 서버 오브젝트는 상태, 헤더 및 본문의 3가지 부분으로 구성된 응답을 반환합니다.
- 상태에는 200,404 등의 HTTP 상태 코드가 포함됩니다.
- 헤더에는 각각에 대한 응답이 포함되어 키와 값의 페어가 표시됩니다.열쇠는 문자열이어야 합니다.
- 본문에는 서버가 요청자에게 보내는 최종 데이터가 포함됩니다.
랙::Response는 랙 응답을 작성하기 위한 편리한 인터페이스를 제공합니다.클래스 랙::Response는 lib/rack/response.rb에 정의되어 있습니다.응답 클래스를 사용하려면 미들웨어 계층에서 스택으로 인스턴스화하십시오.쿠키를 수정하는 데 사용할 수 있습니다.
랙[7] 내 미들웨어
랙을 사용하면 애플리케이션과 웹 서버 간에 미들웨어 컴포넌트 체인을 쉽게 추가할 수 있습니다.랙에서는 여러 미들웨어 컴포넌트를 사용하여 요청/응답 내용을 수정한 후 다음 컴포넌트로 넘길 수 있습니다.이를 미들웨어 스택이라고 합니다.
랙 서버는 디폴트로 여러 미들웨어를 추가하여 모든 [8]세부 사항에 대한 예외 표시, 랙[9] 사양에 따른 요구 및 응답 검증 등의 기능을 수행합니다.
적용 예
Ruby 구문의 랙 호환 "Hello World" 응용 프로그램:
# helloWorld.ru # 콜 방식이 정의되어 있는 어플리케이션. 학급 안녕 세계 # HTTP 상태 코드, 콘텐츠타입 및 콘텐츠를 반환하는 콜 방식. 방어하다 불러 (부러워하다) [200, {"콘텐츠 유형" => "텍스트/문자, charset=utf-8"}, ['헬로 월드']] 끝. 끝.
위의 코드용 서버는 "rackup helloWorld.ru"을 사용하여 시작할 수 있습니다.또, http://localhost:9292/랙 애플리케이션에 의해서 사용되는 디폴트 포토는 9292 입니다.
「 」를 참조해 주세요.
- Python WSGI
- Perl PSGI
- Javascript JSGI
- Python 페이스트
- 스몰톡 씨사이드
- 패스트 CGI
- 자바 서블릿
- 서버측 JavaScript
- Apache JServ 프로토콜
- ZeroC 얼음
- Cisco 에치
- ISAPI 인터넷 서버 애플리케이션프로그래밍 인터페이스(Microsoft)
레퍼런스
- ^ "Releases - rack/rack". Retrieved 20 June 2020 – via GitHub.
- ^ 팬케이크: 랙 기반 웹 애플리케이션을 스택 및 느슨하게 결합하는 방법Rubyinside.com(2009-12-04)2013-09-20에 회수.
- ^ 잭 - 소개 웨이백 머신에 보관된 2014-12-17.Jackjs.org 를 참조해 주세요.2013-09-20에 회수.
- ^ 호출음 - 소개GitHub.com 를 참조해 주세요.2020-04-20에 회수.
- ^ clacklisp.org 를 참조해 주세요.2014-10-17에 회수.
- ^ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana 를 참조해 주세요.Asp.net 를 참조해 주세요.2014-10-01에 취득.
- ^ a b c "Documentation for rack". www.rubydoc.info. Retrieved 2016-09-14.
- ^ "Rack::ShowExceptions". www.rubydoc.info. Retrieved 2016-09-14.
- ^ "Rack::Lint". www.rubydoc.info. Retrieved 2016-09-14.