본문 바로가기
Develop/Api 뽀개기

[node.js] express 사용하여 간단한 api 만들어보기 (+@CORS)

by 보보트레인 2023. 6. 19.

NODEJS

1. 간단예제 및 테스트

index.js에 다음의 코드 입력

const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World')
})

app.get('/dog', function (req, res) {
  res.send('강아지')
})

app.get('/cat', function (req, res) {
  res.send('고양이')
})
app.listen(3000)

간단히 설명하자면 express 라는 npm 모듈은 다운받아서

/(라우터) 기준 dog 파라미터를 보내면 강아지 출력

/ 기준 cat 파라미터를 보내면 고양이 출력

 

→ 이 모든것은 localhost:3000 포트에서 진행된다는 뜻.

 

 

Terminal에 node index.js 쳐서 실행 

(서버를 내리는 것은 ctrl + c로 할 수 있다.)

 

<결과>

localhost:3000/dog를 적으면 강아지 출력

 

 

 

2. 추가 응용

1) html 형식의 전송도 가능함을 알아야 한다.

 

h1태그 사용

이렇게 입력했을 때, 결과값이 h1태그 형식으로 크고 굵게 출력된다

h1으로 나온 것 확인.

2) 링크전송도 가능하다!

href 링크 코드 입력시

다음과 같이 링크 전송이 가능하다.

링크 이동이 가능하다.

 

3. api형식으로 (json방식)  응용

 

다음과 같이 send대신 json방식으로 sound를 파라미터에 맞게 보낼 수 있다.

json방식 전송

 

응용1) param  방식

이번에는 변수 파라미터id를 받는다.

:기준으로  id를 입력하면 그 id값이 response되어 userid에 제이슨 형식으로 출력된다.

 

※참고로 :은 생략해도 된다. → 변수로 작용해서 넣는다는 뜻

: 없이도 잘 출력된다!

 

응용2)  js까지 활용

if문을 사용하여 상황에 따라 json방식 전송

예시 (pig) 결과

잘 나오는것 확인가능

예시 (askhjflashklfa) 결과

알수없음 if문 잘 거쳐가는것 확인가능

 

 

4. CORS 이슈와 프론트엔드 연결 실습

CORS란?

CORS는 "Cross-Origin Resource Sharing"의 약자로, 웹 애플리케이션에서 다른 도메인의 자원을 요청할 때 보안상의 이유로 제한되는 것을 완화하는 방법을 제공하는 웹 표준입니다. 즉, 서로 다른 도메인간의 데이터 교환을 가능하게 해주는 것인데, 이를 허용하지 않으면 보안상의 이유로 웹 브라우저에서 해당 자원의 요청을 거부하게 됩니다.

 

 

사용방법

1. 다운로드 npm에서 cors 치고 받기

2. 해당 코드 입력

해당 코드는 모든 접근을 허용하겠다는 CORS적용 의미

 

3. CORS확인용 index.html파일 작성

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CORS확인페이지</title>
</head>
<body>
    <h1 id="sound"></h1>
    <!--name값 입력 input-->
    <input id="name" type="text">
    <button onclick="getSound()">API 요청</button>
    <script>
        //input받은 값을 getSound에 보냄
        function getSound() {
            // 받은 input값 다시 변수 name에 담음
            const name = document.getElementById('name').value

            //만든 api의 name파라미터로 쏴주겠다.
            fetch(`http://localhost:3000/${name}`)

            //json방식으로 받음
            .then((response) => response.json())

            //받아온 데이터를 어떻게 가공할 것이냐
            .then((data) => {
                //console에 sound로 출력한다.
                console.log(data.sound);
                //sound를 받아와서 위 h1에 적어둔 id=sound 위치에  innerhtml에 넣어준다
                document.getElementById('sound').innerHTML = data.sound
            });
    }
    </script>
    
</body>
</html>

4. 작성한 코드 explore 실행

실행화면

5. dog입력시 어떤 결과 나오는지 콘솔에서 확인

결과값 콘솔에도 잘 찍히고 html에도 잘 나오는것 확인 가능

 

 

6. app.use(cors()) 꺼보고 실행 똑같이 해보기

index.js에서 app.use(cors()) 제거

app.use(cors()) 제거

그 다음 재 실행후 똑같이 api요청하면

다음과 같이 CORS policy에 걸려서 접근이 불가함을 알 수 있다.

※ 반드시 캐시를 지우고 실행해주세요! 캐시기록때문에 접근이 가능할 수도 있습니다.

 

 

 

반응형

'Develop > Api 뽀개기' 카테고리의 다른 글

html method (rest)  (0) 2023.06.11
NPM (node pakage manager)  (0) 2023.06.11
Node.js 1분요약 / 설치  (0) 2023.06.11
RestAPI 만들기_4(CRUD 로직구현)  (0) 2023.06.11
RestAPI만들기_3(CRUD)  (2) 2023.06.10