SlideShare a Scribd company logo
GO REVEL 구성, 
ROUTE 공부하면서 정리 
페이스북 그룹 GOLANG KOREA 
HTTPS://WWW.FACEBOOK.COM/GROUPS/GOLANGKO/ 
---------- 
1 
https://fb.com/me.adunhansa 
https://twitter.com/arahansa 
http://adunhansa.tistory.com/ 
ABOUT 
CONTACT 
SOURCE 
1
아라한사 
----------------------- 
-------------------------------------------- 
국내에도 브로그래머문화가 확산되기를 바라며 이것저것.. 관심만 많음-.- 
슬라이드로 정리를 즐겨하나, 하나의 템플릿으로 돌려쓰기하고있다..;; 
1. 작성자 소개 2
• 본 문서는 번역을 하긴하되, 정확한 번역도 아니고, 보면서 
바로 하는 직역도 아니고.. 그냥 보이는 대로 뜻만 통하는 
번역이다. 내용이 중간중간 생략해가면서 
속도를 위해, 그리고 매끄러운 읽기를 위하여 (사실은 
귀차니즘을 극복치못하고) Revel 문서를 번역할 것이다. 
• 필자의 개인적 바램은 개발을 모르는 세살배기 어린애도(?!) 
이해할 수 있도록..(은 좀 힘들고) 아무튼 개발상식이 없더라도 
최대한 이해할 수 있도록 하는 것이 개인적 바램이다. 
중간중간에 쓸데없는 설명이 들어갈 수 있다. 
• 폰트&디자인같은 것이 마음에 안 들어 요청이 있다면 바꿀 
의향이 있다 
문서 성격 3
• 자 REVEL 공홈의 순서대로 OVERVIEW 를 보자. 
일단 구동 4 
• Revel과 프로그램들은 
GOPATH laybout 안에 
GO line tool 에 정해진된대로 
설치되어야 한다. 
• 레이아웃설명인데 지난시간에도 
좀 한 것 같다. 자세히 알아보자
• App 디렉토리 
• App 디렉토리는 소스코드와 템플릿을 가진 폴더다. 
App 디렉토리 5 
app/controller 
app/models 
app/views 
revel 은 
모든 템플릿이 app/views 에 있고 
모든 컨트롤러는 app/controller 에 있다. 
• 그밖에, 만약 원한다면 어플리케이션은 그것의 코드를 정리할 수 있다. Revel 은 app/ 폴더 밑의 모든 
디렉토리를 관리하며 변경사항이 감지되면 rebuild 한다. App/밖의 어떤 dependencies 들은 변동되어도 
감시되지 않을 것이다. 이것은 개발자가 필요할 때, 재컴파일할 책임이 있다는 것을 말한다. 
게다가 Revel 은 구동시에 개발자의 코드를 초기화시키기 위해서 app 내의 init() 메소드를 가진 어떤 
패키지도 import 한다. 
• The Contollers/init.go 파일은 인터셉터 hook 을 등록하는 관습적인 위치파일이다. Init()의 순서는 같은 
패키지의 소스파일들사이에서 명확하지가 안다. 그래서 인터셉터 정의를 하나의 파일에 모으는 것은 
개발자로 하여금 그것들이 실행될 순서를 명확하게 정하게 해준다.
• Conf 디렉토리 
• Conf 디렉토리는 어플리케이션 설정 파일이 있는 곳이다. 
두가지 주요 설정 파일이 있는데 하나는 
app.conf 이다. 어플리케이션을 위한 주요 설정파일로서, 표준설정 파라미터를 가진다. 
Routes 는 경로 정의파일이다. 
• message/ 디렉토리는 모든 지역화된 메시지 파일을 가지며 
• Public 디렉토리는 웹서버에의해 제공될 정적자원들을 저장하는 곳이다. 일반적으로 이것은 
나눠진 세개의 하위 디렉토리를 이미지, css, js 파일들을 위해 가진다. 
Conf, message, public 디렉토리 6
컨트롤러 오버뷰 7 
• Controller 
• 컨트롤러는 *revel.Controller 를 내장하는 아무 타입이다. 
• 일반적으로 우측이미지 같이 쓰며 (*revel.Controlelr 는 구조체 struct의 첫번째 타입으로 
내장되어야 한다) 
• Revel.Controller 는 요청을 위한 context 로, 요청과 응답 데이터를 가진다. Godoc에 자세한 
설명이 나와있다. 하지만 여기에 정의가 있다. (helpertype의 정의와 함께!) 
•
• 컨트롤러 오버뷰도 공홈에는 이정도만 
나와있다. 다음에는 route를 보자! 오버뷰 끝! 
컨트롤러 오버뷰 8
• Routing (경로 설정) 
• 경로설정은 conf 폴더의 routes 파일안에 정의된다. 
• 기본적 문법은 (메소드) (URL패턴) (Controller.Action) 이다. 
• 이 예제는 모든 특징을 보여준다. 그러면 한 줄씩 알아보자. 결국 
우리는 특정한 action을 취하는 url을 생성하는 reverse 
routing 이 어떻게 이뤄지는 지 알게 될 것이다. 
Routing!! 드디어!! 9
• Routing (경로 설정) 
• 간단 경로 GET /login App.Login 
이 간단한 경로는 메소드와 경로의 정확한 매치를 사용한다. 
AppController 에서 Login 액션을 적용시킨다. 
• Trailing slashes GET /hotels/ Hotels.Index 
이 경로는 /hotels 와 /hotels/ 두 가지 경로에서 Hotels.Index를 
적용시킨다. Hotels.Index에로의 역경로 는 /를 포함할 것이다. 
Trailsing slahes 는 액션들 사이에서 구별짓기 위해 사용해서는 
안된다. 간단경로 /login 은 /login/ 에 대한 요청에 매칭될 것이다. 
• (필자 주: trailing slash .. 뭐. 그냥 / 있건 없건 같이 처리한다 
이말아닌가 모르겠다. ) 
Routing!! 간단경로와 슬래시 10
• URL 파라미터들 
• GET /hotels/:id Hotels.Show 
• 경로의 부분은 매칭되고 추출될 것이다. :id 변수는 “/”를 제외하고 어떤 것과 매칭 
될것이다. 예를 들자면 /hotels/123 이나 /hotels/abc 둘다 이 경로로 루팅될 
것이다. 
• 액션 메소드 파라미터뿐만 아니라 Controller.Params 맵에서 파라미터를 
추출하는 것이 가능할 것이다. 예를 들자면 다음과 같다. 
(필자 주: 다양한 부분에서 파라미터 추출이 가능하다) 
Routing!! : URL 파라미터 11
• 라우터가 와일드카드의 두번째 종류를 인식한다. *파라미터는 경로의 마지막 요소가 
되어야 한다. 그리고 이것은 모든 후속 경로요소와 매칭된다. 예를 들자면 이와 같은 
경우 우리는 /public/으로 시작하는 모든 경로와 매칭될 수 있다. 
• 웹소켓은 다른 요청과 같은 방식으로 루팅되지만 ws 라는 메소드 식별자를 
쓴다.웹소켓을 받아주는 액션은 다음같이 될 것이다. 
Routing!! * 파라미터, 웹소켓 12
• 정적자원관리. Static.Serve의 2가지 파라미터 버전을 위해서 “ 사이에 공백은 
허용되지 않는다. 또한 인코딩/csv 때문이기도 하다. 
• 정적 자원 디렉토리들을 지원하기 위하여 Revel 은 Static controller 를 가진 
static 모듈을 제공하며 이 컨트롤러는 두개의 파라미터를 받는다. 
• Prefix(String) – (상대 혹은 절대)자원 루트 경로 
• Filepath(String) 요청된 파일의 상대경로 
Routing!! 정적자원관리 13
• 정적 자원 부분에서 설명했듯이, 루팅은 아마 하나 이상의 파라미터를 액션에 
명시한다. 저 위를 예로 보자. 
• 제공된 아규먼트들은 그들의 포지션을 사용하여서 파라미터이름으로 바운딩된다. 
이러한 경우 리스트 타입 문자열은 첫번째 액션 파라미터의 이름으로 바운딩 된다. 
이러한 것들은 다음상황에 유용할 수 있다. 
• 비슷한 액션들이 있는 경우 
• 같은 일을 하지만 다른 mode로 운영되는 경우 
• 같은 일을 하지만 다른 데이터 타입으로 운영되는 경우 
Routing!! 고정된 파라미터 14
• Routes 를 가지고 있는 모듈들은 두가지 방법으로 임포트 가능하다. 
일단 mymodule이 이러한 route 파일을 가지고 있다고 가정하자. 
• 첫번째 방법은 routes 파일을 이용해서 있는 그대로의 경로를 불러오는 것이다. 
• 이렇게 바로 모듈을 불러오면 
/gopher와 /gopher/add의 주소가 
바로 임포트 된다. 
• 두번째 방법은 prefix된 경로 밑에 임포트 하는 방법 
이렇게 하면 
/foo/gopher 와 /foo/gopher/add를 
가지게 된다 
Routing!! 루팅 모듈 15
URL 아규먼트 추출은 또한 적용될 액션을 결정하는 데 사용할 수 있다. 컨트롤러와 
액션매칭은 대소문자를 구분하지않는다. 
• 이 루팅 라인 예제는 다음 루팅경로에 영향을 미친다. 
• 비슷하게, 이 예제는 어떤 액션에도 접근한다. 
또한 대소문자를 구별하지 않기 때문에 대문자로 써도 같은 액션을 취하게 된다. 
• 오토루팅은 특히 리버스 루팅과 결합하여 빠른 액션 적용에 유용하다. 
Routing!! 자동 루팅 16
• 몇가지 이유로 리버스 루팅을 사용하여 URL을 만들어보는 것은 좋은 연습이다. 
• 오탈자 피하기 
• 컴파일러가 리버스 루팅이 적절한 숫자와 파라미터 타입을 가지고 있는지 보장하기 
• 지역화된 URL이 루트파일을 변화시키기(필자 주 :Localizes URL changes to 
one place: the routes file. 라고 써있었는데 뭔말인지..-_-) 
• 당신의 어플리케이션을 빌드하자마자, Revel 은 app/routes 패키지를 만들것이고, 
양식의 선언과 함께 사용될 것이다. 
• 다음의 문장은 URL을 Controller.Action 에 주어진 파라미터와 함께 리턴한다. 
다음장에 좀더 복잡한 예제가 있다. 
Routing!! 리버스 루팅 17
• 다음 슬라이드에서는 루팅에 대해서 배운 것을 실제 revel에서 만든 myapp 을 
가지고 일단 좀 만지작 만지작 놀아봐야겠다.. 루팅 예제는 다음과 같다고 하는데 
당장 이해는 
잘 안된다-.-ㅋ 
Routing!! 리버스 루팅 18
• 일단 끝. 슬라이드들의 정리를 아마 페이스북 golangkorea 에서 목록화를 시켜둘 
Revel 정리 : 끝 19 
것같다.
20 
THANK YOU ! 
arahansa 
------ 
------ 
페북 : https://fb.com/me.adunhansa 
트위터 : https://twitter.com/arahansa 
블로그: http://adunhansa.tistory.com/

More Related Content

PDF
동시성 프로그래밍 기초 in GO
라한사 아
 
PPTX
Go revel 컨셉_정리
라한사 아
 
PDF
스프링 REST DOCS 따라해보기
라한사 아
 
PDF
Golang 개발 환경(profile) 다르게 잡아주기
라한사 아
 
PDF
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
라한사 아
 
PPSX
스프링 오픈소스 정리
라한사 아
 
PPSX
스프링 프레임워크로 블로그 개발하기
라한사 아
 
PDF
스프링 데이터 레디스 엘라스틱 발표자료
라한사 아
 
동시성 프로그래밍 기초 in GO
라한사 아
 
Go revel 컨셉_정리
라한사 아
 
스프링 REST DOCS 따라해보기
라한사 아
 
Golang 개발 환경(profile) 다르게 잡아주기
라한사 아
 
스프링 Generic autowired 로 구현하는 제너릭 컨트롤러 이야기
라한사 아
 
스프링 오픈소스 정리
라한사 아
 
스프링 프레임워크로 블로그 개발하기
라한사 아
 
스프링 데이터 레디스 엘라스틱 발표자료
라한사 아
 

What's hot (20)

PPSX
스프링시큐리티와 소셜연습 이해를 위한 글
라한사 아
 
PPSX
spring data jpa 간단한 튜토리얼
라한사 아
 
PPTX
Groovy 시작 입문
라한사 아
 
PDF
신림프로그래머 스터디 웹팩 발표자료
라한사 아
 
PPTX
Spring project 예제 분석
홍섭 안
 
PDF
스프링 Generic autowired이용해보기
라한사 아
 
PDF
아라한사의 스프링 시큐리티 정리
라한사 아
 
PDF
jQuery angular, React.js 로 댓글달아보기 공부했던 기록
라한사 아
 
PPSX
Gulp 입문
라한사 아
 
PDF
Aws ses 이메일 보내기 받기 송신 수신
라한사 아
 
PPTX
구글앱엔진+스프링+스프링datajpa+메이븐
라한사 아
 
PDF
Growing object oriented software guided by test
라한사 아
 
PDF
블로그 주도 개발
JeongHun Byeon
 
PDF
자바로 Mnist 구현하고_스프링웹서버붙이기
라한사 아
 
PDF
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
PDF
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
PPTX
뭔지 모르지만 발표
Kyoung Up Jung
 
PPTX
플라스크 템플릿
Thomas Hyunsik Kim
 
PDF
Django in Production
Hyun-woo Park
 
PDF
쉽게 쓰여진 Django
Taehoon Kim
 
스프링시큐리티와 소셜연습 이해를 위한 글
라한사 아
 
spring data jpa 간단한 튜토리얼
라한사 아
 
Groovy 시작 입문
라한사 아
 
신림프로그래머 스터디 웹팩 발표자료
라한사 아
 
Spring project 예제 분석
홍섭 안
 
스프링 Generic autowired이용해보기
라한사 아
 
아라한사의 스프링 시큐리티 정리
라한사 아
 
jQuery angular, React.js 로 댓글달아보기 공부했던 기록
라한사 아
 
Gulp 입문
라한사 아
 
Aws ses 이메일 보내기 받기 송신 수신
라한사 아
 
구글앱엔진+스프링+스프링datajpa+메이븐
라한사 아
 
Growing object oriented software guided by test
라한사 아
 
블로그 주도 개발
JeongHun Byeon
 
자바로 Mnist 구현하고_스프링웹서버붙이기
라한사 아
 
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
 
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
뭔지 모르지만 발표
Kyoung Up Jung
 
플라스크 템플릿
Thomas Hyunsik Kim
 
Django in Production
Hyun-woo Park
 
쉽게 쓰여진 Django
Taehoon Kim
 
Ad

Viewers also liked (16)

PPTX
Let's Go (golang)
상욱 송
 
PPSX
프로그래밍 go투어 정리
라한사 아
 
PDF
10 steps to implement edms
LogicalDOC
 
PDF
LogicalDOC White Paper
LogicalDOC
 
PDF
Performance test using_j_meter_ver1.2
Tommy Lee
 
PPTX
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
Minchul Jung
 
PDF
LogicalDOC Ecosystem
LogicalDOC
 
PDF
HTTP/2와 웹 성능 최적화 방안
SangJin Kang
 
PPTX
Go 1.설치와 세팅
재봉 이
 
PDF
오픈소스 성능 최적화 보고서 ch07. Infinispan
HyeonSeok Choi
 
PPSX
개발자를위한 오픈소스라이선스
라한사 아
 
PPSX
Go 페이징게시판만들기
라한사 아
 
PDF
자바채팅 다중
라한사 아
 
PDF
SPDY : 더 빠른 웹을 위한 프로토콜
Yunsang Choi
 
PDF
HTTP 완벽가이드 6장.
HyeonSeok Choi
 
PDF
HTTP 완벽가이드 1장.
HyeonSeok Choi
 
Let's Go (golang)
상욱 송
 
프로그래밍 go투어 정리
라한사 아
 
10 steps to implement edms
LogicalDOC
 
LogicalDOC White Paper
LogicalDOC
 
Performance test using_j_meter_ver1.2
Tommy Lee
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
Minchul Jung
 
LogicalDOC Ecosystem
LogicalDOC
 
HTTP/2와 웹 성능 최적화 방안
SangJin Kang
 
Go 1.설치와 세팅
재봉 이
 
오픈소스 성능 최적화 보고서 ch07. Infinispan
HyeonSeok Choi
 
개발자를위한 오픈소스라이선스
라한사 아
 
Go 페이징게시판만들기
라한사 아
 
자바채팅 다중
라한사 아
 
SPDY : 더 빠른 웹을 위한 프로토콜
Yunsang Choi
 
HTTP 완벽가이드 6장.
HyeonSeok Choi
 
HTTP 완벽가이드 1장.
HyeonSeok Choi
 
Ad

Similar to Go revel 구성_루팅_정리 (20)

PDF
LucideWorks Banana 소개
SuHyun Jeon
 
PDF
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
NAVER D2
 
DOCX
Apache 핵심 프로젝트 camel 엿보기
Hwang Sun Oh Kelly
 
PDF
AngularJS In Production
MooYeol Lee
 
PPTX
2-2. html5
JinKyoungHeo
 
PDF
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
YoungSu Son
 
PPTX
파이썬 플라스크 이해하기
Yong Joon Moon
 
PDF
2023.05.22 발표 자료 : 스프링 부트 기초
HONG YONG JUN
 
PPTX
[HaU] 신입 기술 면접 준비 java
유리 하
 
PDF
RESTful API 설계
Jinho Yoo
 
PPT
어플리케이션 성능 최적화 기법
Daniel Kim
 
PDF
HTML5 스펙 소개
Toby Yun
 
PPTX
0515. view helper
민정 김
 
PDF
Network path reference
Sol Kim
 
PDF
막하는스터디 두번째만남 Express(20151025)
연웅 조
 
PPT
PL/SQL - 10g Release1
Michael/Taewoo Kim
 
PPTX
Laravel 06.Request LifeCyle
hojin lee
 
PPTX
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
uEngine Solutions
 
PPTX
클라우드 서비스운영 플랫폼 가루다
상욱 송
 
PPTX
처음부터 다시 배우는 HTML5 & CSS3 강의자료 2일차
Michael Yang
 
LucideWorks Banana 소개
SuHyun Jeon
 
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
NAVER D2
 
Apache 핵심 프로젝트 camel 엿보기
Hwang Sun Oh Kelly
 
AngularJS In Production
MooYeol Lee
 
2-2. html5
JinKyoungHeo
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
YoungSu Son
 
파이썬 플라스크 이해하기
Yong Joon Moon
 
2023.05.22 발표 자료 : 스프링 부트 기초
HONG YONG JUN
 
[HaU] 신입 기술 면접 준비 java
유리 하
 
RESTful API 설계
Jinho Yoo
 
어플리케이션 성능 최적화 기법
Daniel Kim
 
HTML5 스펙 소개
Toby Yun
 
0515. view helper
민정 김
 
Network path reference
Sol Kim
 
막하는스터디 두번째만남 Express(20151025)
연웅 조
 
PL/SQL - 10g Release1
Michael/Taewoo Kim
 
Laravel 06.Request LifeCyle
hojin lee
 
클라우드 서비스운영 플랫폼 가루다 Open cloudengine_패스트캣_cto 송상욱
uEngine Solutions
 
클라우드 서비스운영 플랫폼 가루다
상욱 송
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 2일차
Michael Yang
 

Go revel 구성_루팅_정리

  • 1. GO REVEL 구성, ROUTE 공부하면서 정리 페이스북 그룹 GOLANG KOREA HTTPS://WWW.FACEBOOK.COM/GROUPS/GOLANGKO/ ---------- 1 https://fb.com/me.adunhansa https://twitter.com/arahansa http://adunhansa.tistory.com/ ABOUT CONTACT SOURCE 1
  • 2. 아라한사 ----------------------- -------------------------------------------- 국내에도 브로그래머문화가 확산되기를 바라며 이것저것.. 관심만 많음-.- 슬라이드로 정리를 즐겨하나, 하나의 템플릿으로 돌려쓰기하고있다..;; 1. 작성자 소개 2
  • 3. • 본 문서는 번역을 하긴하되, 정확한 번역도 아니고, 보면서 바로 하는 직역도 아니고.. 그냥 보이는 대로 뜻만 통하는 번역이다. 내용이 중간중간 생략해가면서 속도를 위해, 그리고 매끄러운 읽기를 위하여 (사실은 귀차니즘을 극복치못하고) Revel 문서를 번역할 것이다. • 필자의 개인적 바램은 개발을 모르는 세살배기 어린애도(?!) 이해할 수 있도록..(은 좀 힘들고) 아무튼 개발상식이 없더라도 최대한 이해할 수 있도록 하는 것이 개인적 바램이다. 중간중간에 쓸데없는 설명이 들어갈 수 있다. • 폰트&디자인같은 것이 마음에 안 들어 요청이 있다면 바꿀 의향이 있다 문서 성격 3
  • 4. • 자 REVEL 공홈의 순서대로 OVERVIEW 를 보자. 일단 구동 4 • Revel과 프로그램들은 GOPATH laybout 안에 GO line tool 에 정해진된대로 설치되어야 한다. • 레이아웃설명인데 지난시간에도 좀 한 것 같다. 자세히 알아보자
  • 5. • App 디렉토리 • App 디렉토리는 소스코드와 템플릿을 가진 폴더다. App 디렉토리 5 app/controller app/models app/views revel 은 모든 템플릿이 app/views 에 있고 모든 컨트롤러는 app/controller 에 있다. • 그밖에, 만약 원한다면 어플리케이션은 그것의 코드를 정리할 수 있다. Revel 은 app/ 폴더 밑의 모든 디렉토리를 관리하며 변경사항이 감지되면 rebuild 한다. App/밖의 어떤 dependencies 들은 변동되어도 감시되지 않을 것이다. 이것은 개발자가 필요할 때, 재컴파일할 책임이 있다는 것을 말한다. 게다가 Revel 은 구동시에 개발자의 코드를 초기화시키기 위해서 app 내의 init() 메소드를 가진 어떤 패키지도 import 한다. • The Contollers/init.go 파일은 인터셉터 hook 을 등록하는 관습적인 위치파일이다. Init()의 순서는 같은 패키지의 소스파일들사이에서 명확하지가 안다. 그래서 인터셉터 정의를 하나의 파일에 모으는 것은 개발자로 하여금 그것들이 실행될 순서를 명확하게 정하게 해준다.
  • 6. • Conf 디렉토리 • Conf 디렉토리는 어플리케이션 설정 파일이 있는 곳이다. 두가지 주요 설정 파일이 있는데 하나는 app.conf 이다. 어플리케이션을 위한 주요 설정파일로서, 표준설정 파라미터를 가진다. Routes 는 경로 정의파일이다. • message/ 디렉토리는 모든 지역화된 메시지 파일을 가지며 • Public 디렉토리는 웹서버에의해 제공될 정적자원들을 저장하는 곳이다. 일반적으로 이것은 나눠진 세개의 하위 디렉토리를 이미지, css, js 파일들을 위해 가진다. Conf, message, public 디렉토리 6
  • 7. 컨트롤러 오버뷰 7 • Controller • 컨트롤러는 *revel.Controller 를 내장하는 아무 타입이다. • 일반적으로 우측이미지 같이 쓰며 (*revel.Controlelr 는 구조체 struct의 첫번째 타입으로 내장되어야 한다) • Revel.Controller 는 요청을 위한 context 로, 요청과 응답 데이터를 가진다. Godoc에 자세한 설명이 나와있다. 하지만 여기에 정의가 있다. (helpertype의 정의와 함께!) •
  • 8. • 컨트롤러 오버뷰도 공홈에는 이정도만 나와있다. 다음에는 route를 보자! 오버뷰 끝! 컨트롤러 오버뷰 8
  • 9. • Routing (경로 설정) • 경로설정은 conf 폴더의 routes 파일안에 정의된다. • 기본적 문법은 (메소드) (URL패턴) (Controller.Action) 이다. • 이 예제는 모든 특징을 보여준다. 그러면 한 줄씩 알아보자. 결국 우리는 특정한 action을 취하는 url을 생성하는 reverse routing 이 어떻게 이뤄지는 지 알게 될 것이다. Routing!! 드디어!! 9
  • 10. • Routing (경로 설정) • 간단 경로 GET /login App.Login 이 간단한 경로는 메소드와 경로의 정확한 매치를 사용한다. AppController 에서 Login 액션을 적용시킨다. • Trailing slashes GET /hotels/ Hotels.Index 이 경로는 /hotels 와 /hotels/ 두 가지 경로에서 Hotels.Index를 적용시킨다. Hotels.Index에로의 역경로 는 /를 포함할 것이다. Trailsing slahes 는 액션들 사이에서 구별짓기 위해 사용해서는 안된다. 간단경로 /login 은 /login/ 에 대한 요청에 매칭될 것이다. • (필자 주: trailing slash .. 뭐. 그냥 / 있건 없건 같이 처리한다 이말아닌가 모르겠다. ) Routing!! 간단경로와 슬래시 10
  • 11. • URL 파라미터들 • GET /hotels/:id Hotels.Show • 경로의 부분은 매칭되고 추출될 것이다. :id 변수는 “/”를 제외하고 어떤 것과 매칭 될것이다. 예를 들자면 /hotels/123 이나 /hotels/abc 둘다 이 경로로 루팅될 것이다. • 액션 메소드 파라미터뿐만 아니라 Controller.Params 맵에서 파라미터를 추출하는 것이 가능할 것이다. 예를 들자면 다음과 같다. (필자 주: 다양한 부분에서 파라미터 추출이 가능하다) Routing!! : URL 파라미터 11
  • 12. • 라우터가 와일드카드의 두번째 종류를 인식한다. *파라미터는 경로의 마지막 요소가 되어야 한다. 그리고 이것은 모든 후속 경로요소와 매칭된다. 예를 들자면 이와 같은 경우 우리는 /public/으로 시작하는 모든 경로와 매칭될 수 있다. • 웹소켓은 다른 요청과 같은 방식으로 루팅되지만 ws 라는 메소드 식별자를 쓴다.웹소켓을 받아주는 액션은 다음같이 될 것이다. Routing!! * 파라미터, 웹소켓 12
  • 13. • 정적자원관리. Static.Serve의 2가지 파라미터 버전을 위해서 “ 사이에 공백은 허용되지 않는다. 또한 인코딩/csv 때문이기도 하다. • 정적 자원 디렉토리들을 지원하기 위하여 Revel 은 Static controller 를 가진 static 모듈을 제공하며 이 컨트롤러는 두개의 파라미터를 받는다. • Prefix(String) – (상대 혹은 절대)자원 루트 경로 • Filepath(String) 요청된 파일의 상대경로 Routing!! 정적자원관리 13
  • 14. • 정적 자원 부분에서 설명했듯이, 루팅은 아마 하나 이상의 파라미터를 액션에 명시한다. 저 위를 예로 보자. • 제공된 아규먼트들은 그들의 포지션을 사용하여서 파라미터이름으로 바운딩된다. 이러한 경우 리스트 타입 문자열은 첫번째 액션 파라미터의 이름으로 바운딩 된다. 이러한 것들은 다음상황에 유용할 수 있다. • 비슷한 액션들이 있는 경우 • 같은 일을 하지만 다른 mode로 운영되는 경우 • 같은 일을 하지만 다른 데이터 타입으로 운영되는 경우 Routing!! 고정된 파라미터 14
  • 15. • Routes 를 가지고 있는 모듈들은 두가지 방법으로 임포트 가능하다. 일단 mymodule이 이러한 route 파일을 가지고 있다고 가정하자. • 첫번째 방법은 routes 파일을 이용해서 있는 그대로의 경로를 불러오는 것이다. • 이렇게 바로 모듈을 불러오면 /gopher와 /gopher/add의 주소가 바로 임포트 된다. • 두번째 방법은 prefix된 경로 밑에 임포트 하는 방법 이렇게 하면 /foo/gopher 와 /foo/gopher/add를 가지게 된다 Routing!! 루팅 모듈 15
  • 16. URL 아규먼트 추출은 또한 적용될 액션을 결정하는 데 사용할 수 있다. 컨트롤러와 액션매칭은 대소문자를 구분하지않는다. • 이 루팅 라인 예제는 다음 루팅경로에 영향을 미친다. • 비슷하게, 이 예제는 어떤 액션에도 접근한다. 또한 대소문자를 구별하지 않기 때문에 대문자로 써도 같은 액션을 취하게 된다. • 오토루팅은 특히 리버스 루팅과 결합하여 빠른 액션 적용에 유용하다. Routing!! 자동 루팅 16
  • 17. • 몇가지 이유로 리버스 루팅을 사용하여 URL을 만들어보는 것은 좋은 연습이다. • 오탈자 피하기 • 컴파일러가 리버스 루팅이 적절한 숫자와 파라미터 타입을 가지고 있는지 보장하기 • 지역화된 URL이 루트파일을 변화시키기(필자 주 :Localizes URL changes to one place: the routes file. 라고 써있었는데 뭔말인지..-_-) • 당신의 어플리케이션을 빌드하자마자, Revel 은 app/routes 패키지를 만들것이고, 양식의 선언과 함께 사용될 것이다. • 다음의 문장은 URL을 Controller.Action 에 주어진 파라미터와 함께 리턴한다. 다음장에 좀더 복잡한 예제가 있다. Routing!! 리버스 루팅 17
  • 18. • 다음 슬라이드에서는 루팅에 대해서 배운 것을 실제 revel에서 만든 myapp 을 가지고 일단 좀 만지작 만지작 놀아봐야겠다.. 루팅 예제는 다음과 같다고 하는데 당장 이해는 잘 안된다-.-ㅋ Routing!! 리버스 루팅 18
  • 19. • 일단 끝. 슬라이드들의 정리를 아마 페이스북 golangkorea 에서 목록화를 시켜둘 Revel 정리 : 끝 19 것같다.
  • 20. 20 THANK YOU ! arahansa ------ ------ 페북 : https://fb.com/me.adunhansa 트위터 : https://twitter.com/arahansa 블로그: http://adunhansa.tistory.com/