API
- API는 애플리케이션끼리 연결해주는 매개체이자 약속
-키보드로 글자를 입력하면 키보드는 우리가 작성한 글자를 컴퓨터에 전달해주는 역할을 합니다.
우리가 키보드의 키를 누르는것이 API를 호출하는것으로 볼 수 있습니다.
-어떤 연인은 서로 기분이 상할것 같으면 미리 “윙크”를 하기로 약속했습니다.
대화하다 갑자기 “윙크”를 본 상대방은 기분이 나쁜것을 알아채고 은근히 기분을 풀어주려 노력합니다. 이러한 약속 또한 API라고 볼 수 있습니다.
우리가 API를 작성한다는 의미는?
-웹 어플리케이션(프론트엔드)에서 원하는 기능을 수행하는 URL과 인터페이스를 제공한다는 의미
REST는 “Representational State Transfer”의 줄임 말
-최대한 간단하게 설명하자면 URL, Headers, Method 등 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의한다고 이해하면 됩니다.
-이 “REST 아키텍쳐”는 사람이 봐도 쉽게 이해할 수 있도록 “자원”을 정의하고 이 “자원”을 중심으로 표현을 구성하는 원칙을 제시합니다.
-REST API는 “REST 아키텍쳐”라는 규칙을 따르는 API라고 생각하시면 됩니다.
REST API의 구성
- 자원(Resource) - URL
- 행위 - HTTP method
Create : 생성(POST)
Read : 조회(GET)
Update : 수정(PUT)
Delete : 삭제(DELETE)
- 표현
REST API 예시
router.get('/books', (req, res) => {
res.json({ success: true, data: getAllBooks() }); // 성공하면 getAllBooks() 함수가 실행
});
REST API 구현하기
- 상품 목록 조회 API 구현
const express = require("express");
const router = express.Router();
router.get("/", (req, res)=> {
res.send("This is Root Page");
})
const goods = [
{
goodsId: 4,
name: "상품 4",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2016/09/07/02/11/frogs-1650657_1280.jpg",
category: "drink",
price: 0.1,
},
{
goodsId: 3,
name: "상품 3",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2016/09/07/02/12/frogs-1650658_1280.jpg",
category: "drink",
price: 2.2,
},
{
goodsId: 2,
name: "상품 2",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2014/08/26/19/19/wine-428316_1280.jpg",
category: "drink",
price: 0.11,
},
{
goodsId: 1,
name: "상품 1",
thumbnailUrl:
"https://cdn.pixabay.com/photo/2016/09/07/19/54/wines-1652455_1280.jpg",
category: "drink",
price: 6.2,
},
];
router.get("/goods", (req, res) => {
res.json({
//goods: goods // goods라는 key: 배열값
goods, // 이렇게 하나만 넣어줘도 됌, key와 같은 이름의 변수를 참조 -> 객체 초기자 라고 한다.
})
})
module.exports = router; // 라우터 변수를 모듈로서 내보낸다, 이게 있어야지 다른 js 파일에서 import가 가능하다.
응답 값
// "/goods/:goodsId" - goodsId에는 어떤 값이 들어와도 되는데 내가 여기에 들어올 값들의 이름을 goodsId라고 칭한거
router.get("/goods/:goodsId", (req, res) => {
const goodsId = req.params.goodsId; // goodsId에 접근
// console.log(goodsId);
// res.send("Goods id 확인용") // 서버는 항상 응답을 줘야한다, 안주면 무한로딩
res.send({
detail: goods.filter((item) => item.goodsId === Number(goodsId))[0], // filter()은 항상 배열을 반환한다,
// arrow function 은 return item.goodsId === goodsId와 동일
// goodsId 는 숫자인데, 주소에 들어오는 값은 문자열이다, 그래서 type을 변경해줘야함 Number()
});
})
'Sparta > 스파르타코딩 웹개발 종합반' 카테고리의 다른 글
Node.js - 02 - 미들웨어 (express.js) & Routing (0) | 2022.03.16 |
---|---|
Node.js - 02 - Express.js 세팅 (0) | 2022.03.16 |
Node.js - 01 - 생년월일을 입력받아 만 나이 계산하는 함수 (0) | 2022.03.14 |
Node.js 01 - 자바스크립트 정리 (0) | 2022.03.14 |
웹개발 종합반 프로젝트 - 06 뉴스크롤링(네이버뉴스) (0) | 2022.03.13 |