본문 바로가기

프로그래밍/Web

(6)
RESTful API API를 개발하다 보면 혹은 많은 회사의 JD의 자격 요건을 보면 이러한 문장을 흔히들 볼 수 있다. RESTful API 설계 및 개발 경험누구나 흔하게 REST라는 말을 쓰지만 잘 모르겠는 주제인데 최근에 플람님이 아래와 같은 질문을 주셨다. RESTful 하게 개발하려 하신 것 같은데 호출 URL 들이 동사로 되어있는 것 같은데 어떤 의도가 있으신가요?그 질문을 받고 순간 아차 싶었고 순간 당황해서 RESTful하게 개발하려 했는데 그 부분은 놓친 것 같다라고 답변하였지만 명확하게 정리하지 못한 것 같아서 정리를 해보려 한다. RESTful API REST는 REpresentational statue Transfer의 약자로 웹의 장점을 최대한 잘 활용할 수 있는 제약조건의 집합이다. REST 아키..
HTTP 헤더 HTTP 헤더 - 일반 헤더 header-field = field-name":" OWS field-value OWS(OWS: 띄어쓰기 허용) field-name은 대소문자 구분 없음 HTTP 전송에 필요한 모든 부가정보 표현 Content-Type: 표현 데이터의 형식에 대한 정보,미디어 타입이나 문자 인코딩(application/json, charset=utf-8...) Content-Encoding: 표현 데이터를 압축하기위해 사용(gzip, deflate, identity) Content-Language: 표현 데이터의 자연 언어(ko, en) Content-Length: 표현 데이터의 길이, 바이트 협상 클라이언트가 선호하는 표현 요청으로 요청을 보낼 경우에만 사용한다. Accept: 클라이언트가..
HTTP 상태코드 HTTP 상태코드 클라이언트의 요청의 처리상태를 응답 메세지에서 알려줌 1xx(informational): 요청이 수신돼 처리 중. 2xx(successful): 정상 처리됨 3xx(redirection): 요청을 완료하려면 추가적인 처리가 필요함 4xx(client error): 클라이언트 오류나 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx(server error): 서버 오류. 서버가 정상 요청을 처리하지 못함 2xx - successful 클라이언트의 요청을 성공적으로 처리함 200대에서 자주 볼 수 있는 응답코드 200 ok: 요청 성공 201 Created: 요청 성공으로 새로운 리소스 생성 202 Accepted: 요청은 접수되었으나 처리가 완료되지 않음 204 No Content..
HTTP 메서드 HTTP Method 클라이언트가 서버로 요청할 때 어떤 목적을 갖는 요청인지 메서드로 명시함 GET: 리소스 조회 POST: 입력데이터를 전송하여 등록 PUT: 리소스가 존재한다면 수정, 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 요청 HEAD: GET과 같지만 본문없이 헤더만 반환 OPTIONS: 서버에 특정 리소스가 어떤 메서드를 지원하는지 확인 요청 TRACE: 클라이언트와 서버 사이의 모든 HTTP 요청을 따라가 메시지의 이상여부를 확인 GET 리소스 조회에 사용 전달하려는 데이터는 query string을 통해 전달 메시지 바디를 사용할 수 있지만 지원하지 않는 곳이 많아서 권장하지 않음 POST 메세지 바디를 통해 서버로 요청데이터 전달 주로 신규 리소스 등록이나 ..
HTTP 특성 HTTP 특성 HTTP의 가장큰 특성 두가지로 무상태(stateless)와 비연결성(connectionless)가 있다. Stateless 서버가 클라이언트의 이전 상태를 보관하지 않는다는 의미. 상태를 보관하지 않으므로 클라이언트의 응답에 어떤 서버가 응답을 하더라도 상관이 없다.(요청이 많이 증가해도 서버를 증설하여 쉽게 해결할 수 있다.) Connectionless 비 연결성은 클라이언트와 서버가 연결을 맺은 후 요청에 대한 응답을 마치면 맺었던 연결을 끊어버리는 성질 비연결성의 장점 서버 자원을 효율적으로 사용 가능 비연결성의 단점 연결이 끊어지고 새로 연결할떄 TCP?IP연결을 새로 맺으므로 3 way-handshake하는데 리소스를 소모한다 하나의 요청에서 여러 데이터를 전달하는경우 위의 문제..
JWT JWT(Json Web Token)이란? JWT는 인증에 필요한 정보들을 암호화시킨 문자열로 RFC7519 표준입니다. 사용자는 JSON 객체를 HTTP Authorization 헤더에 실어 서버로 보내서 헤더에 포함된 JWT 정보를 통해 인증을 할 수 있습니다. 해싱 알고리즘으로는 HMAC SHA256, RSA등이 사용된다. JWT 토큰의 구성 JWT 토큰은 크게 세 부분으로 나뉘는데 Header, Payload, Signature로 불리며 문자열에서 온점(.)으로 구분됩니다. xxxxxx.yyyyy.zzzzz 헤더(Header) Header는 해싱 알고리즘과 토큰의 타입으로 구성됩니다. { "alg": "HS256", "typ": "JWT" } 정보(Payload) Payload는 토큰에 담을 정보를..