본문 바로가기

programming/Web

(21)
REST API 메서드 예시 (GET/POST/PUT/PATCH) 1. GET -> 파라미터로 받아온 id로 해당되는 Cat 객체 찾기 router.get('/cats/:id', (req, res) => { try { const params = req.params; const cats = Cat.find((cat)=> { return cat.id === params.id }) res.status(200).send({ success : true, data: { cats } }) }catch(error) { res.status(400).send({ success: false, error : error.message }) } }) 2. POST -> 신규 객체 추가 router.post('/cats', (req, res) => { try { const data = req.b..
[Express] Post로 JSON 데이터 보내기 (미들웨어 설정) express 설치 후 post로 JSON 객체를 보내려는데, undefined 가 뜬다 post 라우터 app.post('/cats', (req: express.Request, res: express.Response) => { try { const data = req.body console.log(data) res.status(200).send({ success: true, data : {} }) } catch(error){ res.status(400).send({ success: false, error: error.message }) } }) 포스트맨에서 테스트한 내용 백엔드 라우터에서 콘솔로그로 받은 req.body -> undefined 이는 아주 간단하게 해결된다 express가 json 데이터..
Restfull 웹 API 디자인(1) 잘 디자인 된 웹 API 라면 1. 플랫폼 독립성 : 내부에서 어떤 방식으로 구현되는지와 관계없이 API를 호출할 수 있어야 한다. 표준 프로토콜을 사용 2. 서비스 진화 : API가 수정되어도(진화) 기존의 어플리케이션은 수정 없이 계속 작동할 수 있어야 한다. 기본 디자인 원칙 1. 리소스 중심 디자인, 클라이언트에서 접근할 수 있는 모든 종류의 개체, 데이터, 서비스가 리소스에 포함된다. https://tacit.com/orders 2. 리소스마다 해당 리소스를 고유하게 식별하는 URI인 식별자가 있다. https://tecit.com/orders/5 3. HTTP 요청은 독립적, 상태를 저장하지 않는다. 4. 표준 HTTP 동사 수행 : GET, POST, PUT, PATCH 5. 리소스 URI는..
HMAC : API 통신 클라이언트 무결성 검증 방법 HMAC : Hash-based Message Authentication Code 해쉬 기반 메시지 신원확인 코드 클라이언트 👉 API 서버에 보내는 "요청자의 신원과 메시지의 무결성을 검증하기 위한 해쉬 문자열" HMAC 만드는 방법 HMAC는 인증을 위한 Secret Key와 임의의 길이를 가진 Message를 해시함수를 이용해서 생성 해시함수로 MD5, SHA-256등 일반적인 함수 사용가능 각 알고리즘에 따라 다른 고정 길이의 MAC(=해시문자열 = 코드)이 생성된다 만약 중간에 해커가 코드를 가로채서 동일한 요청을 계속 보낸다면 (Reply attack), 이를 방지하기 위해서 MAC을 생성할 때 timestamp를 추가해서 사용하는 방법이 있다 API 서버는 해당 메시지가 생성된 시간을 알 수..
AWS - EC2(EBS/AZ/ELB) Elastic Compute Cloud ECC -> EC2 유동적인(탄력적인) 컴퓨터 클라우드 EC2 사용시 지불방법 1. on-demand : 시간단위로 가격이 고정되어 있음. 개발 초기단계, 유연한 크기 설정 가능 개발 시작 시간, 개발 끝나는 시간을 알수 없는 경우, 단기간에 개발을 할 수 있는경우, 개발 초기단계에서 EC2인스턴스에 테스트를 해볼때 적합함 2. reserved : 한정된 EC2 용량 사용가능, 지정석, 크기를 늘이고 줄이는 기능 없음, on-demand 보다 가격이 저렴함. 개발의 시작과 끝을 미리 알 수 있는 경우에 적합. 예상가능한 워크로드시 지정해두고 할인받아 사용가능 3. spot : 입찰 가격 적용, 가장 큰 할인률을 적용받을 수 있음. EC2는 어떻게 작동되는가? 무엇으..
[AWS] IAM 이란? (개념과 실습) IAM 이란? 클라우드 사용자(유저)를 관리(권한 등) 1. 유저별로 다른 권한 부여기능(A: 데이터베이스 읽기 권한만 부여/ B: 데이터베이스 테이블 생성 권한만 부여) 2. 모든 유저들에게 비밀번호를 강제로 변경하도록 기한 설정 가능 3. MFA 다중인증 기능 : 루트유저는 필수 루트 유저로 생성할 수 있는 것 1) 그룹 : 유저 묶음 2) 유저 3) 역할 4) 정책 : json 형태로 되어있는 document를 가리킨다. 세밀한 접근권한을 일일히 설정하여 하나의 정책 document 생성 IAM 은 universal 하다 universal (전역적) regional (지역적) IAM 정책 시뮬레이터(IAM과 관련 문제 디버깅하기 위한 툴) 1. 개발환경(Staging or Develop)에서 실제환..
API, SDK, Library, Framework API API : Application Program Interface all about communication : 다른서비스끼리의 의사소통 방법 응용프로그램에서 운영체제나 프로그래밍언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 연결, 다리 /naver-map/jamsil 구현과 독립적으로 사양만 정의되어있다 API에 따라 접근권한이 필요할 수 있다 open API : 노출된 API 구성 : 요청, Library 응용 프로그램 개발을 위해 필요한 기능(함수)를 모아놓은 소프트웨어 독립성을 가진다 응용프로그램이 능동적으로 라이브러리를 사용한다 library와 API의 차이점은 구현 로직의 유무이다 SDK SDK : Software Development Kit 소스코드의 모음과 유틸리티 Tool ..
CSS3 특성 선택자(Selector) 특성 선택자란? 주어진 특성의 존재 여부나 그 값에 따라 요소를 선택하는 것 title link Internal link https://example.com Insensitive internal link http://example.org /* css */ /* elements with a title attribute */ a[title] { color: red; } /* elements with an href matching "https://example.org" */ a[href="https://example.com"] { color: green; } /* elements with an href containing "example" */ a[href*="example"] { font-size: 2em;..
REST Service에 대하여 REST API란? Representational State Transfer 웹을 좀 더 효율적으로 사용하기 위한 아키텍처 REST 구성 - 자원(URI) - 행위(METHOD) - 표현 REST 특징 ( 아직 모호한 개념 ) 1) uniform interface : URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일 2) stateless (상태없음) : 작업을 위한 상태가 따로 없음. API는 들어오는 요청만 단순히 처리. 3) Cacheable(캐시가능): HTTP가 가진 캐싱 기능이 적용됨, HTTP프로토콜에서 사용하는 헤더(Last-modifed, E-tag)를 이용하여 캐싱 구현 가능 4) Self-descriptiveness(자체 표현 구조) : RE..
HTTP 헤더 총정리 헤더란? HTTP 통신의 일부 [공통 헤더] 요청 과 응답에 모두 사용되는 헤더, Content 시리즈는 엔티티 헤더라고 불린다. (예시 사진에 안나와 있는 헤더도 있음) Date : HTTP 메시지가 만들어진 시각, 자동으로 생성됨 Connection : HTTP/2 -> 없음, HTTP/1.1 -> keep-alive Cache-Control : 캐시 관련 헤더***********(매우 중요 - 웹성능을 최대로 높이기위해, 원하는 시점에 캐싱을 하고, 지우고가 중요, 불필요한 통신을 하지 않도록), 아래 옵션들 속성해서 사용 가능 no-store : 아무것도 캐싱하지 않음, 저장하지 않음 no-cache : 모든 캐시를 쓰기 전에 서버에 이 캐시 써도 돼? 물어봐라 라는 뜻 = max-age:0으로 ..