[TIL #2] 간단한 API 프록시 서버 구현

2024. 8. 9. 11:12·Camp/T.I.L.

원래 로컬 환경에서 다 하고 싶었지만,

CORS 문제에 직면했다.

 

CORS란 무엇인가?

 

CORS란 무엇인가?

CORS가 무엇인지 알기 전에, 이 CORS가 등장하게 된 배경을 먼저 알아보자.SOP는 2011년 RFC 6454에서 등장한 보안 정책으로 "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책이다.그러

velog.io

 

 

로컬에서 서버를 굴리려고 해도 SSL 문제에서 자유롭지 않았다.

결국 마지막으로 택한 방법은 외부 호스팅에 프록시 서버 올리기.

 

내가 선택한 서비스는 Railway

 

Railway

Railway is an infrastructure platform where you can provision infrastructure, develop with that infrastructure locally, and then deploy to the cloud.

railway.app

 

Render는 무료플랜일 때 일정 시간 이상 사용하지 않으면 비활성화되기 때문에,

빠른 응답이 필요한 API 서버에 적합하지 않다고 생각했다.

 

서버는 다음과 같이 작성했다.

app.get('/search', async (req, res) => {
    console.log("Get call");
    const query = req.query.query;
    const url = `https://openapi.naver.com/v1/search/news.json?query=${encodeURIComponent(query)}`;

    try {
        const response = await fetch(url, {
            method: 'GET',
            headers: {
                'X-Naver-Client-Id': clientId,
                'X-Naver-Client-Secret': clientSecret
            }
        });
        console.log("Get Response");
        const data = await response.json();
        res.json(data);
        console.log("Send Response");
    } catch (error) {
        res.status(500).json({ error: error.message });
    }
});

app.listen(port, () => {
    console.log(`Proxy server running at ${port}`);
});

단순히 리소스를 받아오기만 할 것이므로 엔드포인트는 ``/search``하나만 두었다.

 

이렇게 배포가 완료된 것을 확인했다.

이제 웹 스크립트에서 엔드포인트를 배포한 서버로 바꿔주면 완료.

엄청 빠릿한 건 아니지만, 그렇다고 한참 걸리는 것도 아니니 꽤 괜찮다.

 

이런 부분 보다 프론트엔드적인 부분을 다루는 게 더 힘들었다.

나와 디자인은 정말 맞지 않구나... 하는 생각도 들었고.

'Camp > T.I.L.' 카테고리의 다른 글

[TIL #3] this, call(), apply(), bind()  (0) 2024.08.12
[KPT 회고] 팀 소개 페이지 미니 프로젝트에 대한 회고  (0) 2024.08.09
[TIL #1] 명세  (0) 2024.08.05
[TIL #20] 3진법 뒤집기  (0) 2024.07.22
[TIL #19] 사각형 별 찍기  (0) 2024.07.17
'Camp/T.I.L.' 카테고리의 다른 글
  • [TIL #3] this, call(), apply(), bind()
  • [KPT 회고] 팀 소개 페이지 미니 프로젝트에 대한 회고
  • [TIL #1] 명세
  • [TIL #20] 3진법 뒤집기
BVM
BVM
  • BVM
    E:\
    BVM
  • 전체
    오늘
    어제
    • 분류 전체보기 (168)
      • Thoughts (14)
      • Study (69)
        • Japanese (3)
        • C++ & C# (46)
        • Javascript (3)
        • Python (14)
        • Others (3)
      • Play (1)
        • Battlefield (1)
      • Others (11)
      • Camp (73)
        • T.I.L. (57)
        • Temp (1)
        • Standard (10)
        • Challenge (3)
        • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 본 블로그 개설의 목적
  • 인기 글

  • 태그

    Asio
    네트워크 프로그래밍
    로깅
    Server
    Python
    discord
    cloudtype
    클라우드
    포인터
    c#
    bot
    7계층
    C++
    Network
    JS
    OSI
    서버
    discord py
    db
    docker
    프로그래머스
    IOCP
    boost
    네트워크
    암호화
    베데스다
    Selenium
    스타필드
    FF14
    Dalamud
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
BVM
[TIL #2] 간단한 API 프록시 서버 구현
상단으로

티스토리툴바