본문 바로가기

전체 글18

모든 개발자를 위한 HTTP 웹 기본 지식_섹션6_4xx_5xx_에러코드 4xx - 클라이언트 오류, 5xx - 클라이언트 오류 에러 Status Code에 알아보자! 4xx (Client Error) 클라이언트 오류 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음 오류의 원인이 클라이언트에 있음 중요! 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패함 NOTE 4xx vs 5xx (1) 400대 오류는 클라이언트 오류로 요청 자체가 잘못된 것으로 똑같은 요청&데이터로 재요청을 해도 항상 실패한다. (2) 반면에 500대 오류는 서버 오류로 서버가 복구만 된다면 똑같은 요청&데이터로 재요청해도 성공할 수 있다. 400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 요청 구문, 메시지 .. 2022. 2. 15.
모든 개발자를 위한 HTTP 웹 기본 지식_섹션6_3xx_Redirection(2) 일시적인 리다이렉션 302, 307, 303 리소스의 URI가 일시적으로 변경된다. 따라서 검색엔진 등에서 URL을 변경하면 안된다(영구적으로 바뀐것이 아니므로). 307과 303의 탄생 비화 😂 원래는 302 statusCode로 리다이렉트시 요청 메소드가 POST 였으면 POST로 재요청하도록 스펙을 만든 것이었는데, 브라우저들이 301처럼 get으로 모두 바꿔서 요청하는 바람에 하는 수 없이 302는 get으로 변하도록, 307은 원래 요청 메소드와 변하지 않도록 스펙을 추가하였다고 한다. 303은 302가 거의 다 get으로 바꿔 보내지만 MAY이므로 무조건적으로 리다이렉트가 get이었으면 하는 바람 때문에 생긴 Status Code 이다. 302, 307, 303의 기능은 모두 같으나 아래처럼 .. 2022. 2. 14.
모든 개발자를 위한 HTTP 웹 기본 지식_섹션6_3xx_Redirection(1) 3xx (Redirection) 요청을 완료하기 위해 유저 에이전트의 추가 조치 필요 서버가 오? 요청을 완료하려면, 클라이언트야~ 뭔가 추가적인 작업이 필요해 ^^ 라는 상태코드를 말한다. 300대 상태코드들 300 Mutilple Choices (300은 거의 쓰지 않는다) 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 리다이렉션 이해 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트)한다. => 301 Moved Permanently. 경로가 영원히 이동했으므로 해당 Location으로 자동.. 2022. 2. 14.
모든 개발자를 위한 HTTP 웹 기본 지식_섹션5_HTTP메소드_응용 클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 예시) 앱 클라이어언트에서 웹뷰 띄울때 => 스터디때 치느님 명세서 보여드리자 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 예시) 로그인, 프로필 설정 => 스터디때 뇽뇽 코드를 보여드리자 HTML Form을 통한 데이터 전송 회원 가입, 상품 주문, 데이터 변경 POST 일때는 Content-Type이 application/x-www-form-urlencoded 이고 httpbody에 urlEncoding 방식으로 데이터가 들어갑니다. 앱에서 URLEncoding 예시) iOS 라이브러리로 많이 사용되는.. 2022. 2. 8.
Responder Chain Example 2020년 3월에 적은 글입니다. from velog.io 1. Responder Chain Example 상황 설명 : 상위 뷰(superview)로 GreyView(customized)가 있고 이 뷰의 하위 뷰(subview)로 MyLabel, MyButton, MyTextField(역시 모두 cutomized)가 있다. 아래 코드처럼 responder chain의 responder가 될 수 있는 AppDelegate, ViewController, GreyView, MyLabel, MyButton에 모두 touchesBegan을 재정의함.(MyTextField는 현재 상황과 관계 없으므로 제외함) 뷰들의 hierarchy 앱 화면 캡쳐 extension AppDelegate { override fun.. 2022. 2. 8.
클로저 캡쳐에 대해서 (about closure capture) 2020년 2월에 적었던 글입니다. from velog.io 1. Capturing Values: 클로저 캡쳐란? 출처 : https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID103 클로저 캡쳐란 클로저가 매개변수나 지역변수가 아닌 주변 외부의 context를 사용하기 위해 주변 외부의 context를 참조하는 것(Capturing by reference) 입니다. 그래야 주변 외부 context가 없어질지라도 클로저가 주변 외부 context를 사용할 수 있습니다. apple의 공식 예제로 클로저 캡쳐가 무엇인지 알아봅시다 func makeIncrementer(forIncrement amount: Int) -> () -> Int { var .. 2022. 2. 8.