Ruby 웹 애플리케이션-CGI 프로그래밍
Ruby는 범용 언어입니다. 웹 언어 라고 제대로 부를 수는 없습니다 . 그럼에도 불구하고 웹 애플리케이션과 웹 도구는 일반적으로 Ruby의 가장 일반적인 용도 중 하나입니다.
Ruby에서 자체 SMTP 서버, FTP 데몬 또는 웹 서버를 작성할 수있을뿐만 아니라 Ruby를 CGI 프로그래밍과 같은 일반적인 작업에 사용하거나 PHP를 대체 할 수도 있습니다.
함께 몇 분을 보내주세요 CGI 프로그래밍 CGI 프로그래밍에 대한 자세한 사항에 대한 튜토리얼.
CGI 스크립트 작성
가장 기본적인 Ruby CGI 스크립트는 다음과 같습니다.
#!/usr/bin/ruby
puts "HTTP/1.0 200 OK"
puts "Content-type: text/html\n\n"
puts "<html><body>This is a test</body></html>"
이 스크립트를 test.cgi 를 호출 하고 올바른 권한을 사용하여 Unix 기반 웹 호스팅 제공 업체에 업로드하면 CGI 스크립트로 사용할 수 있습니다.
예를 들어, 웹 사이트가있는 경우 https://www.example.com/Linux 웹 호스팅 공급자로 호스팅하고 test.cgi 를 기본 디렉토리에 업로드 하고 실행 권한을 부여한 다음https://www.example.com/test.cgi 다음과 같은 HTML 페이지를 반환해야합니다. This is a test.
여기 에서 웹 브라우저에서 test.cgi 를 요청하면 웹 서버는 웹 사이트에서 test.cgi 를 찾은 다음 Ruby 인터프리터를 사용하여 실행합니다. Ruby 스크립트는 기본 HTTP 헤더를 반환 한 다음 기본 HTML 문서를 반환합니다.
cgi.rb 사용
Ruby에는 cgi 이전 CGI 스크립트보다 더 정교한 상호 작용을 가능하게합니다.
cgi를 사용하는 기본 CGI 스크립트를 만들어 보겠습니다.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>This is a test</body></html>"
여기에서 CGI 개체를 만들고이를 사용하여 헤더 행을 인쇄했습니다.
양식 처리
CGI 클래스를 사용하면 두 가지 방법으로 HTML 쿼리 매개 변수에 액세스 할 수 있습니다. URL이 /cgi-bin/test.cgi?FirstName = Zara & LastName = Ali라고 가정합니다.
다음과 같이 CGI # []를 사용하여 FirstName 및 LastName 매개 변수에 직접 액세스 할 수 있습니다.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi['FirstName'] # => ["Zara"]
cgi['LastName'] # => ["Ali"]
이러한 양식 변수에 액세스하는 또 다른 방법이 있습니다. 이 코드는 모든 키와 값의 해시를 제공합니다.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]}
h['FirstName'] # => ["Zara"]
h['LastName'] # => ["Ali"]
다음은 모든 키를 검색하는 코드입니다.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi.keys # => ["FirstName", "LastName"]
양식에 동일한 이름을 가진 여러 필드가 포함 된 경우 해당 값이 배열로 스크립트에 반환됩니다. [] 접근자는 이들 모두를 얻기 위해 params 메소드의 결과 인 these.index 중 첫 번째 만 반환합니다.
이 예에서는 양식에 "name"이라는 세 개의 필드가 있고 "Zara", "Huma"및 "Nuha"라는 세 개의 이름을 입력했다고 가정합니다.
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi['name'] # => "Zara"
cgi.params['name'] # => ["Zara", "Huma", "Nuha"]
cgi.keys # => ["name"]
cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}
Note− Ruby는 GET 및 POST 메서드를 자동으로 처리합니다. 이 두 가지 다른 방법에 대한 별도의 치료는 없습니다.
올바른 데이터를 보낼 수있는 연관된 기본 양식은 다음과 같은 HTML 코드를 갖습니다.
<html>
<body>
<form method = "POST" action = "http://www.example.com/test.cgi">
First Name :<input type = "text" name = "FirstName" value = "" />
<br />
Last Name :<input type = "text" name = "LastName" value = "" />
<input type = "submit" value = "Submit Data" />
</form>
</body>
</html>
양식 및 HTML 만들기
CGI에는 HTML을 만드는 데 사용되는 수많은 방법이 포함되어 있습니다. 태그 당 하나의 방법을 찾을 수 있습니다. 이러한 메서드를 활성화하려면 CGI.new를 호출하여 CGI 개체를 만들어야합니다.
태그 중첩을 더 쉽게하기 위해 이러한 메서드는 콘텐츠를 코드 블록으로 사용합니다. 코드 블록은 태그의 콘텐츠로 사용될 String을 반환해야합니다 . 예를 들면-
#!/usr/bin/ruby
require "cgi"
cgi = CGI.new("html4")
cgi.out {
cgi.html {
cgi.head { "\n"+cgi.title{"This Is a Test"} } +
cgi.body { "\n"+
cgi.form {"\n"+
cgi.hr +
cgi.h1 { "A Form: " } + "\n"+
cgi.textarea("get_text") +"\n"+
cgi.br +
cgi.submit
}
}
}
}
NOTE− CGI 클래스 의 양식 메소드는 양식 제출에 사용할 HTTP 메소드 (GET, POST 등 ...)를 설정하는 메소드 매개 변수를 허용 할 수 있습니다. 이 예에서 사용되는 기본값은 POST입니다.
이것은 다음 결과를 생성합니다-
Content-Type: text/html
Content-Length: 302
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">
<HTML>
<HEAD>
<TITLE>This Is a Test</TITLE>
</HEAD>
<BODY>
<FORM METHOD = "post" ENCTYPE = "application/x-www-form-urlencoded">
<HR>
<H1>A Form: </H1>
<TEXTAREA COLS = "70" NAME = "get_text" ROWS = "10"></TEXTAREA>
<BR>
<INPUT TYPE = "submit">
</FORM>
</BODY>
</HTML>
인용 문자열
URL 및 HTML 코드를 다룰 때 특정 문자를 인용 할 때주의해야합니다. 예를 들어 슬래시 문자 (/)는 URL에서 특별한 의미가 있으므로escaped 경로 이름의 일부가 아닌 경우.
예를 들어, URL의 쿼리 부분에있는 모든 /는 문자열 % 2F로 변환되며 사용하려면 /로 다시 변환되어야합니다. 공백과 앰퍼샌드도 특수 문자입니다. 이를 처리하기 위해 CGI는 루틴을 제공합니다.CGI.escape 과 CGI.unescape.
#!/usr/bin/ruby
require 'cgi'
puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
이것은 다음 결과를 생성합니다-
Zara+Ali%2FA Sweet+%26+Sour+Girl")
#!/usr/bin/ruby
require 'cgi'
puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
이것은 다음 결과를 생성합니다-
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
CGI 클래스에서 유용한 방법
다음은 CGI 클래스와 관련된 메소드 목록입니다.
루비 CGI - 표준 CGI 라이브러리와 관련된 방법.
쿠키 및 세션
이 두 가지 개념을 다른 섹션에서 설명했습니다. 섹션을 따르십시오-
루비 CGI 쿠키 - CGI 쿠키를 처리하는 방법.
루비 CGI 세션 - CGI 세션을 관리하는 방법.
웹 호스팅 서버
유닉스 기반 서버에서 웹 사이트를 호스팅하려면 인터넷에서 다음 주제를 확인할 수 있습니다.
Unix 기반 웹 호스팅