1. http://happyhourguide.blogspot.kr/2016/10/uiimaveview-extension.html
2. http://happyhourguide.blogspot.kr/2016/10/alamofire-2.html
3. http://happyhourguide.blogspot.kr/2016/12/alamofire-queue.html
https://github.com/Alamofire/Alamofire
* 사용자의 URL 입력을 내부에서 사용하기 위한 형태로 변환하기
url의 형태로 다음의 타입을 사용할 수 있다: String, NSURL, NSURLComponents, NSURLRequest. 이들은 모두 URLStringConvertible을 구현하고 있다. URLRequest 함수를 통해 앞의 타입을 NSMutableURLRequest(내부에 NSURL을 가지고 있는다)로 변환한다. ParameterEncoding.swift의 encode함수를 통해 url을 서버에 보내기 위한 형태로 변환한다. encode 함수는 URLRequestConvertible을 파라메터로 받는다.
URLStringConvertible -> NSMutableRequest -> URLRequestConvertible
- Alamofire.swift
request, upload, download의 함수를 통해 서버에 HTTP 요청을 할 수 있다. Manager를 통해 작업이 이루어진다. 리턴은 Request.
URLStringConvertible과 URLRequestConvertible을 정의한다.
- Manager.swift
Alamofire에서 사용되는 글로벌한 인스턴스를 가지고 있다.
NSURLSessionConfiguration: 기본 session configuration과 기본 헤더 값(Accept-Encoding, Accept-Language, User-Agent)으로 초기화.
SessionDelegate: session에 대한 delegate
생성시 NSURLSession 초기화하고 종료시 invalidateAndCancel()을 통해 실행중이던 테스크들을 정리한다.
사용자가 backgroundCompletionHandler를 통해 서버 요청이 끝났을 때 실행될 내용을 등록할 수 있다.(sessionDidFinishEventsForBackgroundURLSession에 handler를 등록, dispatch_async(dispatch_get_main_queue())를 통해 메인 쓰레드에서 동작하도록 한다.)
- ParameterEncoding.swift
parameter를 percent encoding하고 이를 URL request에 적용한다.
URL, URLEncodedInURL, JSON, PropertyList, Custom의 다섯가지 방법이 있다.
(URLEncodedInURL은 URL과 같이 인코딩을 하나 항상 url의 뒤에 붙인다.)
encode로 인코딩을 시작하고 queryComponents로 key/value를 나누고 escape로 percent-escaped string으로 바꾼다.
URL의 경우 method가 GET, HEAD, DELETE이면 parameter를 url의 뒤에 붙이고 아니면 body에 넣는다. body에 넣을 때는 헤더에 "Content-Type: application/x-www-form-urlencoded; charset=utf-8"도 같이 추가해 준다.
JSON의 경우 NSJSONSerialization을 사용하고 "Content-Type: application/json"을 헤더에 넣는다.
PropertyList의 경우 NSPropertyListSerialization을 사용하고 "Content-Type: application/x-plist"를 헤더에 넣는다.
Custom은 사용자가 직접 인코딩을 처리하도록 한다.
인코딩의 경우 다음과 같은 예가 있다:
parameter에서 key가 array일 경우는 다음처럼 바꾼다: ?key[]=value1&key[]=value2
nested key를 가지고 있는 경우는 다음처럼 바꾼다: ?key[k1]=value1&key[k2]=value2
percent-escaping에 string.stringByAddingPercentEncodingWithAllowedCharacters를 사용한다.
parameter를 percent encoding하고 이를 URL request에 적용한다.
URL, URLEncodedInURL, JSON, PropertyList, Custom의 다섯가지 방법이 있다.
(URLEncodedInURL은 URL과 같이 인코딩을 하나 항상 url의 뒤에 붙인다.)
encode로 인코딩을 시작하고 queryComponents로 key/value를 나누고 escape로 percent-escaped string으로 바꾼다.
URL의 경우 method가 GET, HEAD, DELETE이면 parameter를 url의 뒤에 붙이고 아니면 body에 넣는다. body에 넣을 때는 헤더에 "Content-Type: application/x-www-form-urlencoded; charset=utf-8"도 같이 추가해 준다.
JSON의 경우 NSJSONSerialization을 사용하고 "Content-Type: application/json"을 헤더에 넣는다.
PropertyList의 경우 NSPropertyListSerialization을 사용하고 "Content-Type: application/x-plist"를 헤더에 넣는다.
Custom은 사용자가 직접 인코딩을 처리하도록 한다.
인코딩의 경우 다음과 같은 예가 있다:
parameter에서 key가 array일 경우는 다음처럼 바꾼다: ?key[]=value1&key[]=value2
nested key를 가지고 있는 경우는 다음처럼 바꾼다: ?key[k1]=value1&key[k2]=value2
percent-escaping에 string.stringByAddingPercentEncodingWithAllowedCharacters를 사용한다.
댓글 없음:
댓글 쓰기