랙(Web 서버 인터페이스)

Rack (web server interface)
Ruby 웹 서버 인터페이스인 랙
Rack-logo.png
원저작자레아 노이키르첸
개발자James Tucker, Josh Peek, Jose Valim, Michael Fellinger, Aaron Patterson, Santiago Pastrino, Constantin Haase
안정된 릴리스
2.2.3 / 2020년 6월 15일, 2년 전(2020-06-15)[1]
저장소
운영 체제크로스 플랫폼
유형미들웨어
면허증.MIT 라이선스
웹 사이트rack.github을 클릭합니다.이오 Edit this on Wikidata

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 입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Releases - rack/rack". Retrieved 20 June 2020 – via GitHub.
  2. ^ 팬케이크: 랙 기반애플리케이션을 스택 느슨하게 결합하는 방법Rubyinside.com(2009-12-04)2013-09-20에 회수.
  3. ^ - 소개 웨이백 머신에 보관된 2014-12-17.Jackjs.org 를 참조해 주세요.2013-09-20에 회수.
  4. ^ 호출음 - 소개GitHub.com 를 참조해 주세요.2020-04-20에 회수.
  5. ^ clacklisp.org 를 참조해 주세요.2014-10-17에 회수.
  6. ^ http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana 를 참조해 주세요.Asp.net 를 참조해 주세요.2014-10-01에 취득.
  7. ^ a b c "Documentation for rack". www.rubydoc.info. Retrieved 2016-09-14.
  8. ^ "Rack::ShowExceptions". www.rubydoc.info. Retrieved 2016-09-14.
  9. ^ "Rack::Lint". www.rubydoc.info. Retrieved 2016-09-14.

외부 링크