6주차 개발일지
Rest API, Restful API -> URL
-
REST : 소프트 아키텍쳐의 한 양식.
HTTP 프로토콜을 활용하였기 때문에, 웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일.
-
Client에서 바로 객체로 치환 가능한 형태의 데이터 통신이 가능하여, Server와 Client의 역할을 분리할 수 있게 되었다.
-
간단하게 말하자면 URL로 정보의 자원을 표현하는 아키텍쳐 스타일
@Restful -> Rest한 API 느낌~ !직관성!
- 구분자 '/' , '-' -> ex) GET/block-user/3
- Status Code -> 서버와의 통신 상태 코드
- 200 성공!
- 400 -> Client 부적절한 요청
- 500 -> 서버 문제 오류
- 301 -> 기존 URL 변경 -
ex) www.naver.com → www.naver.co.kr
👍 단계별 테스트
- 1단계 Postman → Xcode → print 체크 → swifty JSON → 2단계 JSON 형태 출력해보기
- Code.isSuccess, data(JSON), Message 확인
JSON(JavaScript Object Notation)
-
데이터를 저장하거나 전송할 때 사용되는 경량의 DATA 교환 형식
단순히 데이터를 표시하는 표현 방법이다. 텍스트 형식이며, javascript 객체 형식을 기반으로 만들어졌다.
-
Swift는 JSONDecoder, JSONEncoder를 통해 JSON 데이터를 핸들링 할 수 있다.
-
name-value 쌍으로 이루어져 있다.
🔑 로그인 방식 3가지 [OAuth, JWT, 쿠키-세션]
쿠키-세션 : 쿠키(클라이언트 스토리지) + 세션(서버 스토리지 이름) = 반복되는 걸 줄이기 위해 + 구현이 간단.
- But, SID 노출 시 해킹 위험 보안 취약 → 자유이용권
OAuth → 소셜 로그인 → api 제공 이유 ? 플랫폼 유저 확보 (카카오 ,네이버)
- But, 제약 - 퍼미션 리스트 : nickname, profile image
- 카카오에서는 email → 선택적 (필수 = 사업자등록)
- OAuth → AccessToken + RefreshToken → 6H + 1week, 1month → 갱신 해줘야함
- → 갱신 API → Refresh → new AccessToken
- RefreshToken 있으면 자동 로그인 가능 → 앱 실행 시 갱신 AccessToken 호출 하여 자동로그인
- Keychain → 암호화 저장
- API header 에 추가
- 장점 → 보안성 : 단점 → 리소스 복잡 구현 난이도 오름
- OAuth, refresh → 자동로그인
- → 자동로그인 → UserDefault = 내부 DB
- Appdelgate, View , login .splash ex)
- UserDefault.refreshToken != nil? -> home -> 갱신API 요청 후 → 자동로그인
else 자동 로그인
- 약식이고 원래는 UserDefault가 Keychain 임
JWT (Json Web Token) -> 계속 ~~ 검사
- header(토큰 type, 해쉬 암호화 알고리즘), payload(body 내용), signature(secret key)
- 장점 : 서버에서 별도의 저장 장소 필요 x, 서버에서 처리 필요 x, 계속 검사하므로 보안에 Good
- 해야할일 header → value(token) 헤더 넣는거
+ 페이징 → 100,000 , option , pageNo:Int
page 1 : default → 20개
ex) 구글 네이버 내렸을때 페이지
ios 에서는 → Youtube 처럼 → 일정 스크롤 시 무한 스크롤 : 끝에 닿을때 쯤 또 스크롤
→ 테이블 뷰 , 컬렉션 뷰 → 현재 스크롤 바 위치 알 수 있음 이용
ex) TableView.frame.heigt 와 비교해서 아래쪽이면 더 불러오기 DequeReusable +