Insomnia
API 클라이언트 중 하나. 대표적으로 Postman, Insomnia가 있다.
클라이언트 코드 작성없이 Request를 구성하고(메서드 종류, URL, Body, Auth, Query, Headers 등) 서버에 전달하여 Response를 확인할 수 있다.
API와 Rest API
API란 Application Programming Interface의 약자로
프로그램들끼리 정보를 주고받기 위한 규칙
특정 애플리케이션의 기능을 사용하려면 그 애플리케이션이 제공하는 API를 사용해야 한다.
RestAPI란 Representational State Transfer API의 약자로 REST 아키텍처의 규칙을 따라 구현된 API
REST API 구성
라우터
const router = express.Router(); 로 사용 가능
클라이언트가 요청한 메서드와 URL에 따라 적절한 핸들러
외부에서 import할 수 있게 export 해야한다.
export default router;
서버 실행 코드에서 import 및 특정 라우터로 매핑해야한다.
import myRouter from './routes/myRouter.js';
app.use('/api', [myRouter]);
ip와 포트를 통해 url을 전달받은 서버는 /api까지 읽고 다른 파일에 api 처리를 맡긴다.
라우터 기능을 통한 RestAPI 사용
router.[http 메서드]([URL], [핸들러]);
핸들러 함수는 해당 API로 요청을 받았을 때 실행되는 함수.
핸들러 함수 여러개를 배열로 나열할 수 있다.
핸들러 함수 실행 후 JSON을 반환하는 등 응답을 보낼 수 있다.
express().use(express.json());use(express.urlencoded({ extended: true })); : URL-encoded 데이터를 해석하기 위한 미들웨어. 그냥 세트로 해준다.GET, POST API 구현하기
import express from 'express';
import itemRouter from './routes/item.js';
const app = express();
const PORT = 3000;
//body 객체에 데이터를 넣기 위해 미들웨어 사용
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 라우팅
app.use('/api', [itemRouter]);
// 포트 대기시키기
app.listen(PORT, () => {
console.log(PORT, '포트로 서버가 열렸어요!');
});
import express from 'express';
const router = express.Router();
router.get('/:itemId', (req, res) => {
const item = getItem(req.params.itemId);
//status(200)은 기본값이라 생략 가능
return res.status(200).json({ item });
});
router.post('/item', (req, res) => {
const { name, category, price } = req.body;
const id = getId();
const item = { id, name, category, price };
addItem(item);
return res.status(201).json({ createdItem: item});
});
function addItem(item){ ...
}
function getId(){ ...
}
export default router;
Insomnia에서 프로젝트 추가 > 컬렉션 추가
프로젝트는 리소스의 집합이자 저장소
컬렉션은 리소스 중 하나로 필터(요청 구성 방식)의 집합
필터를 추가하면
요청의 종류(HTTP Request), 메서드, URL, Params, Body 등을 정할 수 있다.
포트 열고(app.js 실행)
메서드는 POST,
url은 localhost:3000/api/item
body에 json 형식으로 데이터를 입력하고
SEND 버튼을 누르면 아래처럼 응답을 미리보기로 확인할 수 있다.
