Insomnia로 Rest API 테스트해보기

김동욱·2024년 11월 21일
  • 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 구성

  1. 자원 - URL 표현 방법
  2. HTTP 메서드(POST, GET, PUT, PATCH, DELETE)
  3. 반환 방법 (JSON, XML)
  • 라우터
    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.js의 req, res 객체
    req는 request 객체를, res는 response 객체를 가리킨다.
    req 객체에는 요청과 관련된 속성들이 정의되어 있다.

req

  • req. ip : 클라이언트의 ip
  • req.body : 요청할 때 전달된 body가 저장된 객체.
    express.json()을 사용해야한다. express().use(express.json());
    use(express.urlencoded({ extended: true })); : URL-encoded 데이터를 해석하기 위한 미들웨어. 그냥 세트로 해준다.
  • req.params : 라우터 매개 변수값들이 저장된 객체
  • req.query : 요청할 때 전달된 쿼리 스트링이 저장된 객체

res

  • res.status(코드) : Http 상태 코드 지정 (200:OK, 404:Not Found 등)
  • res.send(데이터) : 데이터를 문자열 형태로 전달
  • res.json(JSON) : 데이터를 JSON 형식으로 전달

GET, POST API 구현하기

app.js

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, '포트로 서버가 열렸어요!');
});

iems.js

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;

POST API 테스트

Insomnia에서 프로젝트 추가 > 컬렉션 추가
프로젝트는 리소스의 집합이자 저장소
컬렉션은 리소스 중 하나로 필터(요청 구성 방식)의 집합
필터를 추가하면
요청의 종류(HTTP Request), 메서드, URL, Params, Body 등을 정할 수 있다.
포트 열고(app.js 실행)
메서드는 POST,
url은 localhost:3000/api/item
body에 json 형식으로 데이터를 입력하고
SEND 버튼을 누르면 아래처럼 응답을 미리보기로 확인할 수 있다.

profile
갓겜만들어야지

0개의 댓글