URL
- url을 만들 수 있다면 인스턴스 리턴, 아니면 nil
속성
Scheme
- 리소스에 어떻게 접근하는지 표현하는 역할
- 웹페이지나 서버 API에 접근 시 보통
http
, https
사용
http
- 웹페이지 전송에 사용하는 가장 기본적인 프로토콜
- 암호화 없이 전송
https
- http + TLS
- 데이터 암호화
- 보통 앱을 만들 때 이것만 사용(추천)
FTP
FTPS, SFTP
ssh
host
- 리소스가 저장된 서버의 이름이나 주소를 나타내는 항목
port
- 물리적인 게 아닌, 논리적 포트
- 논리적 포트는
0
~ 65535
- 포트 번호를 2바이트 정수로 표현하기 때문
well-known port
- OS가 미리 예약해둔 포트
- 0~1023까지다.
registered port
dynamic port
- FTP: 21
- SSH: 22
- HTTP: 80
- HTTPS: 443
Path
- 해당 서버 내에서의 특정 리소스의 위치 나타냄
- 계층 구조로 표현(전체 계층)
lastPathComponent
pathComponents
query
- 추가적인 파라미터를 전달할 때 사용하는 문자열
- query String이라고 부르기도 함
- 항상 Path 뒤쪽에 옴
- ?를 사용하여 query와 path를 구별
- 하나 이상의 항목이 올 수 있음.
- key = value 형식
- & 를 이용하여 나열
- path까지는 URL 생성자로 만들고, query는 이후 배열로 만들어서 추가하는 식으로 개발하는 것이 바람직하다.
apiURL.append(queryItems: [URLQueryItem(name: "apiKey", value: "aaaaa")])
percent Encoding
addingPercentEncoding(withAllowedCharacters: .urlQuery/Allowed)
- url에는 공백, 특정 문자들이 올 수 없음
- 이를 위해 사용
- % 뒤에는 16진수가 오며, 특정 문자를 가리킴
- 퍼센트 인코딩을 해주는 메소드가 있기 때문에 외울 필요 없음.
- 인코딩 유무를 percentEncoded 파라미터로 전달했던 것
URL을 String으로 변환하기
apiUrl.absoluteString