<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ REST API - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/korean/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ REST API - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/korean/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 22 May 2026 15:16:07 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/korean/news/tag/rest-api/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Postman 스크립트를 사용해 API 인증 과정 단순화하는 법 ]]>
                </title>
                <description>
                    <![CDATA[ Postman은 개발자, API 테스터, 기술 문서 작성자, DevOps 팀이 API 개발을 테스트하고 문서화하며 협업할 때 사용하는 플랫폼입니다. HTTP, GraphQL, gRPC 등 다양한 형태의 API 요청을 손쉽게 만들고, 응답을 확인하며, API 요청들을 컬렉션 형태로 구성해 협업과 자동화를 지원합니다. API 테스트 과정에서 반복 작업을 수행하는 일은 스트레스도 크고 시간이 많이 소요됩니다. 특히 ]]>
                </description>
                <link>https://www.freecodecamp.org/korean/news/how-to-use-postman-scripts/</link>
                <guid isPermaLink="false">691ba51bb7c1b604cf5881a5</guid>
                
                    <category>
                        <![CDATA[ Authentication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ REST API ]]>
                    </category>
                
                    <category>
                        <![CDATA[ API ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jong-Ho Kim ]]>
                </dc:creator>
                <pubDate>Tue, 02 Dec 2025 01:00:05 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/korean/news/content/images/2025/11/dc77dc00-a0a6-40f7-b766-ce07d0d8a637-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>기사 원문:</strong> <a href="https://www.freecodecamp.org/news/how-to-use-postman-scripts/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Use Postman Scripts to Simplify Your API Authentication Process</a>
      </p><p>Postman은 개발자, API 테스터, 기술 문서 작성자, DevOps 팀이 API 개발을 테스트하고 문서화하며 협업할 때 사용하는 플랫폼입니다. HTTP, GraphQL, gRPC 등 다양한 형태의 API 요청을 손쉽게 만들고, 응답을 확인하며, API 요청들을 컬렉션 형태로 구성해 협업과 자동화를 지원합니다.</p><p>API 테스트 과정에서 반복 작업을 수행하는 일은 스트레스도 크고 시간이 많이 소요됩니다. 특히 Postman에서 새 인증 토큰을 받아 복사해서 붙여넣는 작업은 매우 반복적입니다. Postman 스크립트를 사용하면 인증 토큰을 자동으로 저장하고 재사용할 수 있어 이러한 반복 작업을 줄일 수 있습니다.</p><p>이 가이드를 따라 해보려면 다음이 필요합니다:</p><ul><li><a href="https://www.postman.com/downloads/">Postman API 클라이언트</a>가 설치된 컴퓨터</li><li>Postman으로 API 요청을 만들어본 경험</li><li>JWT 인증을 사용하는 백엔드 애플리케이션과 해당 API 문서</li></ul><p>만약 백엔드 애플리케이션이 없다면, 제가 GitHub에 올려 둔 <a href="https://github.com/orimdominic/freeCodeCamp-postman-api-jwt">예제</a>(orimdominic/freeCodeCamp-postman-api-jwt)를 클론해서 사용할 수 있습니다.</p><p>이 글을 다 읽고 나면, Postman에서 인증 토큰을 발급 / 저장 / 재사용하는 과정을 훨씬 단순화할 수 있습니다. 또한 Postman의 다른 테스트 자동화 작업에도 활용할 수 있는 실용적인 스크립트 개념을 익히게 될 것입니다.</p><h2 id="-">목차</h2><ul><li>Postman 스크립트란?</li><li>JWT 인증 과정을 단순화하는 방법</li><li>인증 요청으로 토큰 받아오기</li><li>Postman 스크립트로 토큰을 변수에 저장하기</li><li>API 요청에서 변수 사용하기</li><li>다음 단계</li></ul><h2 id="postman-">Postman 스크립트란?</h2><p><a href="https://learning.postman.com/docs/tests-and-scripts/tests-and-scripts/">Postman 스크립트</a>는 Postman API 클라이언트 내부에서 실행되는 JavaScript 코드로, API 테스트 워크플로우를 자동화하고 확장하는 데 사용합니다. 스크립트는 요청 전(pre-request)과 요청 후(post-response)에 실행되도록 추가할 수 있습니다. 스크립트를 사용하면 다음과 같은 작업이 가능합니다:</p><ul><li>API 요청 데이터를 처리하는 로직 추가</li><li>API 응답에 대한 테스트(assertion) 작성</li><li>API 엔드포인트 자동화 테스트 실행</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/korean/news/content/images/2025/11/161bd327-fbf7-48cb-acab-317ab1cad4c5.jpeg" class="kg-image" alt="161bd327-fbf7-48cb-acab-317ab1cad4c5" srcset="https://www.freecodecamp.org/korean/news/content/images/size/w600/2025/11/161bd327-fbf7-48cb-acab-317ab1cad4c5.jpeg 600w, https://www.freecodecamp.org/korean/news/content/images/2025/11/161bd327-fbf7-48cb-acab-317ab1cad4c5.jpeg 903w" sizes="(min-width: 720px) 720px" width="903" height="493" loading="lazy"></figure><p>Postman의 <strong>Scripts </strong>탭에서 스크립트를 확인할 수 있습니다. <strong>Pre-request</strong> 탭은 요청이 실행되기 전에, <strong>Post-response</strong> 탭은 응답이 온 뒤에 실행됩니다.</p><h2 id="jwt-">JWT 인증 과정을 단순화하는 방법</h2><p>이번 튜토리얼은 다음과 같은 순서대로 진행됩니다:</p><ul><li>인증하여 토큰 발급받기</li><li>스크립트를 사용해 토큰을 컬렉션 변수에 저장하기</li><li>API 요청에서 해당 변수를 사용하기</li></ul><h2 id="--1">인증하여 토큰 발급받기</h2><p>다음과 같은 순서대로 따라해보세요:</p><ol><li>백엔드 애플리케이션을 실행하고 정상적으로 동작하는지 확인합니다.</li><li>Postman을 열고 JWT를 발급받는 로그인(sign-in) 요청으로 이동합니다.</li><li>로그인 엔드포인트에 API 요청을 보내고 JSON 응답 구조를 확인합니다.</li></ol><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/korean/news/content/images/2025/11/b5aad14c-5094-4a84-8876-1bbbb869064c.jpeg" class="kg-image" alt="b5aad14c-5094-4a84-8876-1bbbb869064c" srcset="https://www.freecodecamp.org/korean/news/content/images/size/w600/2025/11/b5aad14c-5094-4a84-8876-1bbbb869064c.jpeg 600w, https://www.freecodecamp.org/korean/news/content/images/size/w1000/2025/11/b5aad14c-5094-4a84-8876-1bbbb869064c.jpeg 1000w, https://www.freecodecamp.org/korean/news/content/images/2025/11/b5aad14c-5094-4a84-8876-1bbbb869064c.jpeg 1416w" sizes="(min-width: 720px) 720px" width="1416" height="623" loading="lazy"></figure><p>위 이미지에서 하이라이트된 부분은 로그인 요청이 성공했을 때 반환되는 JSON 응답을 보여줍니다. 이 응답 스키마에서 인증에 사용할 토큰은 <code>data.token</code> 필드에 포함되어 있습니다. 이제 이 토큰을 Postman 스크립트를 사용해 변수로 저장한 뒤, 인증이 필요한 요청의 <code>Authorization</code> 헤더에서 해당 변수를 사용하게 될 것입니다.</p><h2 id="--2">스크립트를 사용해 토큰을 컬렉션 변수에 저장하기</h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/korean/news/content/images/2025/11/2b43493d-2803-45cd-aefe-0ca5694f75e8.jpeg" class="kg-image" alt="2b43493d-2803-45cd-aefe-0ca5694f75e8" srcset="https://www.freecodecamp.org/korean/news/content/images/size/w600/2025/11/2b43493d-2803-45cd-aefe-0ca5694f75e8.jpeg 600w, https://www.freecodecamp.org/korean/news/content/images/size/w1000/2025/11/2b43493d-2803-45cd-aefe-0ca5694f75e8.jpeg 1000w, https://www.freecodecamp.org/korean/news/content/images/2025/11/2b43493d-2803-45cd-aefe-0ca5694f75e8.jpeg 1229w" sizes="(min-width: 720px) 720px" width="1229" height="483" loading="lazy"></figure><p>Postman에서 <strong>Body </strong>탭 옆에 있는 <strong>Scripts </strong>탭을 클릭합니다. 만약 Postman 창이 작게 표시되어 있다면, 해당 탭이 드롭다운 메뉴 안에 있을 수 있으니 펼쳐서 확인합니다. 다음으로 <strong>Post-response</strong> 탭을 선택합니다. 오른쪽의 텍스트 영역에 응답에서 인증 토큰을 추출해 Postman 변수에 저장하는 스크립트를 작성하게 됩니다. 아래 JavaScript 코드를 복사해 이 텍스트 영역에 붙여 넣습니다.</p><pre><code class="language-javascript">if (pm.response.code == 200) {
    const token = pm.response.json().data.token
    pm.collectionVariables.set("auth_token", token)
}</code></pre><p>Postman 스크립트에서는 <a href="https://learning.postman.com/docs/tests-and-scripts/write-scripts/postman-sandbox-reference/overview/"><code>pm</code> 식별자</a>를 사용해 Postman 환경의 정보에 접근하고 값을 수정합니다. 위 스크립트는 먼저 응답 상태 코드가 200인지 확인해 요청이 성공했는지 확인합니다.</p><p>조건문 내부에서는 <code>pm.response.json().data.token</code>을 사용해 JSON 응답에서 인증 토큰을 가져오고, 이를 <code>auth_token</code>이라는 컬렉션 변수에 저장합니다. 만약 <code>auth_token</code> 변수가 없다면 새로 생성되고, 이미 존재한다면 기존 값이 새 토큰 값으로 덮어씁니다.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/korean/news/content/images/2025/11/bed1fe89-9c00-4b94-9f71-173ea3bf1cd1.png" class="kg-image" alt="bed1fe89-9c00-4b94-9f71-173ea3bf1cd1" srcset="https://www.freecodecamp.org/korean/news/content/images/size/w600/2025/11/bed1fe89-9c00-4b94-9f71-173ea3bf1cd1.png 600w, https://www.freecodecamp.org/korean/news/content/images/size/w1000/2025/11/bed1fe89-9c00-4b94-9f71-173ea3bf1cd1.png 1000w, https://www.freecodecamp.org/korean/news/content/images/2025/11/bed1fe89-9c00-4b94-9f71-173ea3bf1cd1.png 1219w" sizes="(min-width: 720px) 720px" width="1219" height="373" loading="lazy"></figure><p>토큰이 변수에 정상적으로 저장되었는지 확인하려면, 위 스크린샷 기준으로 먼저 컬렉션 이름(1)을 클릭한 뒤 <strong>Variables </strong>탭(2)을 선택합니다. 이후에는 인증 토큰을 매번 복사해 <code>Authorization</code> 헤더에 붙여넣을 필요 없이, <code>Authorization</code> 헤더에서 <code>auth_token</code> 변수를 그대로 사용할 수 있습니다.</p><h2 id="api-">API 요청에서 해당 변수를 사용하기</h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/korean/news/content/images/2025/11/d3bf0f56-c406-4d3e-b7f1-df4cbc2a3cfc.png" class="kg-image" alt="d3bf0f56-c406-4d3e-b7f1-df4cbc2a3cfc" srcset="https://www.freecodecamp.org/korean/news/content/images/size/w600/2025/11/d3bf0f56-c406-4d3e-b7f1-df4cbc2a3cfc.png 600w, https://www.freecodecamp.org/korean/news/content/images/size/w1000/2025/11/d3bf0f56-c406-4d3e-b7f1-df4cbc2a3cfc.png 1000w, https://www.freecodecamp.org/korean/news/content/images/2025/11/d3bf0f56-c406-4d3e-b7f1-df4cbc2a3cfc.png 1185w" sizes="(min-width: 720px) 720px" width="1185" height="390" loading="lazy"></figure><p><code>Authorization</code> 헤더에서 컬렉션 변수를 사용할 때는 <code>{{auth_token}}</code>처럼 중괄호 두 개로 감싸서 참조합니다. 이렇게 설정해두면, API 요청을 보낼 때 Postman이 <code>{{auth_token}}</code>에 저장된 값을 자동으로 <code>Authorization</code> 헤더에 넣어 사용합니다.</p><p>또 다른 인증 요청으로 인해 <code>auth_token</code> 값이 갱신되더라도, 새로운 토큰을 직접 복사해서 붙여넣을 필요는 없습니다. Post-response 탭에 작성한 스크립트가 자동으로 <code>auth_token</code> 값을 업데이트해 주기 때문에, 이후에도 API 요청을 문제없이 계속 보낼 수 있습니다. 더 이상 반복적인 복사 및 붙여넣기 작업을 할 필요가 없습니다. 즉, <strong>DRY (Don’t Repeat Yourself)</strong> 원칙을 지킬 수 있습니다.</p><h2 id="--3">다음 단계</h2><p>이번 튜토리얼에서는 Postman 스크립트를 사용해 환경 변수를 설정하고, 인증 토큰을 자동으로 저장 및 재사용하는 방법을 배웠습니다.</p><p>API 테스트에 대한 더 많은 예제와 assertion 작성 방법을 알고 싶다면, Postman에서 제공하는 <a href="https://learning.postman.com/docs/tests-and-scripts/test-apis/test-apis/">Test API Functionality and Performance in Postman</a> 가이드를 참고하면 도움이 됩니다.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ REST API 모범 사례 – REST 엔드포인트 설계 예시 ]]>
                </title>
                <description>
                    <![CDATA[  웹 개발에서 REST API는 클라이언트와 서버 간 통신을 원활하게 하는 중요한 역할을 합니다. 여기서 클라이언트는 프론트엔드, 서버는 백엔드라고 생각할 수 있습니다. 클라이언트(프론트엔드)와 서버(백엔드)는 서로 직접적으로 호출하기보다는, Application Programming Interface (API)라 불리는 중간자 역할의 인터페이스를 사용합니다. API는 클라이언트-서버 통신 간 중요한 역할을 하므로, 항상 잘 생각해서 모범사례의 API를 설계해야 합니다. ]]>
                </description>
                <link>https://www.freecodecamp.org/korean/news/rest-api-mobeom-sarye-rest-endeupointeu-seolgye-yesi/</link>
                <guid isPermaLink="false">6330ddf85128c00512f56323</guid>
                
                    <category>
                        <![CDATA[ REST API ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Seokyung Kim ]]>
                </dc:creator>
                <pubDate>Mon, 26 Sep 2022 07:15:03 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/korean/news/content/images/2022/09/api.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>기사 원문:</strong> <a href="https://www.freecodecamp.org/news/rest-api-best-practices-rest-endpoint-design-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">REST API Best Practices – REST Endpoint Design Examples</a>
      </p><h4></h4><h2 id="-rest-api-">웹 개발에서 REST API는 클라이언트와 서버 간 통신을 원활하게 하는 중요한 역할을 합니다.</h2><p>여기서 클라이언트는 프론트엔드, 서버는 백엔드라고 생각할 수 있습니다.</p><p>클라이언트(프론트엔드)와 서버(백엔드)는 서로 직접적으로 호출하기보다는, Application Programming Interface (API)라 불리는 중간자 역할의 인터페이스를 사용합니다.</p><p>API는 클라이언트-서버 통신 간 중요한 역할을 하므로, 항상 잘 생각해서 모범사례의 API를 설계해야 합니다. 그래야만 개발자들이 유지보수하기 쉽고, 사용하기 좋을 뿐만이 아니라, 사용하는 동안 문제를 일으키지 않습니다.</p><p>이 자료에서는 REST API를 만들기 위한 9가지 모범사례들을 소개할 예정입니다. 잘 따라온다면 여러분들은 사용자들이 사용하기 쉽고, 강력한 API들을 만들 수 있을 것입니다.</p><p>그 전에 앞서, REST API란 무엇일까요? REST는 Representational State Transfer의 약자로 해석하면 원하는 리소스를 현재 상태에 걸맞은 형태로 전송하는 것입니다. REST는 2000년에 Roy Fielding이 웹을 위해 디자인한 소프트웨어 아키텍처 형식입니다.</p><p>API(Application Programming Interface)는 Restful이라는 REST 디자인 원칙을 따릅니다.</p><p>간단히 말하자면, REST API는 두 컴퓨터가 HTTP(Hypertext Transfer Protocol)를 통해 통신할 때, 같은 형식에 맞춰 통신하도록 합니다.</p><h2 id="rest-api-">REST API 디자인을 위한 모범사례</h2><h2 id="1-json-">1. 데이터를 보내거나 받을 때 JSON 포맷을 사용하세요</h2><p>예전에는 API 요청을 보내거나 받을 때 XML이나 HTML을 사용했었지만, 최근에는 JSON(JavaScript Object Notation)을 사용하는 것이 추세입니다.</p><p>XML은 사용할 때 데이터를 인코딩/디코딩하는 게 번거로울 때가 많아 여러 프레임워크에서 지원하지 않는 경우가 많습니다.</p><p>JavaScript는 API를 받아올 때 JSON을 사용하도록 만들어져 있기 때문에 JSON으로 파싱하는 내장 메소드를 가지고 있습니다. Python이나 PHP 같은 다른 프로그래밍 언어들도 요즘은 JSON으로 파싱하거나 데이터를 다룰 수 있는 메소드들을 지원합니다. (예를 들어, Python의 <code>json.loads()</code>나 <code>json.dumps()</code>가 있습니다.)</p><p>클라이언트 단(Client-side)에서 JSON 데이터를 정확하게 해석하도록 보장하기 위해서는 요청하는 동안 응답 헤더(Response header)에서 <code>Content-Type</code> 타입을 <code>application/json</code>으로 지정해야 합니다.</p><p>반대로 다수의 서버 단(Server-side) 프레임워크들에서는 <code>Content-Type</code>을 자동으로 할당합니다. (예를 들어, Express는 <code>express.json()</code>가 그 기능을 합니다. <code>body-parser</code> 라는 NPM의 패키지도 같은 기능을 합니다.)</p><h2 id="2-">2. 엔드포인트에서는 동사 대신 명사를 사용하세요</h2><p>REST API를 설계할 때는 엔드포인트 주소에 동사를 사용하지 마세요. 이때는 명사를 사용해서 각 엔드포인트들이 무슨 일을 하는지 명시해야 합니다.</p><p>HTTP 메소드들이 이미 <code>GET</code>, <code>PUT</code>, <code>PATCH</code>, <code>DELETE</code>라는 동작을 (Create, Read, Update, Delete) 동사의 형태로 나타내기 때문입니다.</p><p><code>GET</code>, <code>POST</code>, <code>PUT</code>, <code>PATCH</code>, <code>DELETE</code>는 가장 주로 쓰이는 HTTP 동사들이고, <code>COPY</code>, <code>PURGE</code>, <code>LINK</code>, <code>UNLINK</code> 등과 같은 다른 것들도 있습니다.</p><p>따라서 엔드포인트 주소는 다음과 같아서는 안 됩니다. <code>https://mysite.com/getPosts</code> 혹은 <code>https://mysite.com/createPost</code> 대신에 이런 모습이면 더 좋겠지요: <code>https://mysite.com/posts</code></p><p>요약하자면, HTTP 메소드로 엔드포인트가 무슨 일을 할지 정하도록 하세요. <code>GET</code>은 데이터를 얻어오고, <code>POST</code>는 데이터를 생성하며, <code>PUT</code>은 데이터를 갱신하고, <code>DELETE</code>는 그 데이터를 삭제하도록 합시다.</p><h2 id="3-">3. 복수 명사를 사용하세요</h2><p>API 데이터는 사용자로부터 얻어온 리소스라고도 볼 수 있습니다.</p><p><code>https://mysite.com/post/123</code>와 같은 엔드포인트가 있다면, POST 요청으로 게시물을 지우거나, <code>PUT</code> 혹은 <code>PATCH</code> 요청을 통해 갱신하는 게 가능할 겁니다. 그러나 사용자는 다른 게시물들이 있음을 알아채기 힘들 수 있기 때문에 복수 명사를 사용해야 합니다.</p><p>따라서 <code>https://mysite.com/post/123</code> 보다는, <code>https://mysite.com/posts/123</code>이 되어야 합니다.</p><h2 id="4-">4. 에러 핸들링을 위해 상태 코드를 사용하세요</h2><p>API 요청에 대해 응답할 때는 항상 HTTP 상태 코드를 포함해야 합니다. 그래야만 사용자가 요청이 성공했는지, 실패했는지 등 어떻게 돌아가는지 알 수 있습니다.</p><p>다음은 HTTP 상태 코드들과 의미를 담은 표입니다.</p><!--kg-card-begin: html--><table style="tab-size: var(--tab-size)  !important; box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; margin-top: 0px; margin-bottom: 16px; display: block; width: max-content; max-width: 100%; overflow: auto; color: rgb(173, 186, 199); font-family: -apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(34, 39, 46); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><thead style="tab-size: var(--tab-size)  !important; box-sizing: border-box;"><tr style="tab-size: var(--tab-size)  !important; box-sizing: border-box; background-color: var(--color-canvas-default); border-top: 1px solid var(--color-border-muted);"><th style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; font-weight: 600; border: 1px solid var(--color-border-default);">상태 코드 범위</th><th style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; font-weight: 600; border: 1px solid var(--color-border-default);">의미</th></tr></thead><tbody style="tab-size: var(--tab-size)  !important; box-sizing: border-box;"><tr style="tab-size: var(--tab-size)  !important; box-sizing: border-box; background-color: var(--color-canvas-default); border-top: 1px solid var(--color-border-muted);"><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">100 - 199</td><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">정보 제공용<br style="tab-size: var(--tab-size)  !important; box-sizing: border-box;">예를 들어, 102는 자원이 가공 중인 걸 나타냅니다.</td></tr><tr style="tab-size: var(--tab-size)  !important; box-sizing: border-box; background-color: var(--color-canvas-subtle); border-top: 1px solid var(--color-border-muted);"><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">300 - 309</td><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">리다이렉트<br style="tab-size: var(--tab-size)  !important; box-sizing: border-box;">예를 들어, 301은 영구적으로 이동한 걸 나타냅니다.</td></tr><tr style="tab-size: var(--tab-size)  !important; box-sizing: border-box; background-color: var(--color-canvas-default); border-top: 1px solid var(--color-border-muted);"><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">400 - 409</td><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">클라이언트 단 에러<br style="tab-size: var(--tab-size)  !important; box-sizing: border-box;">예를 들어, 400은 클라이언트 측에서 잘못 요청한 것을, 404는 요청한 자원을 찾을 수 없다는 것을 나타냅니다.</td></tr><tr style="tab-size: var(--tab-size)  !important; box-sizing: border-box; background-color: var(--color-canvas-subtle); border-top: 1px solid var(--color-border-muted);"><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">500 - 509</td><td style="tab-size: var(--tab-size)  !important; box-sizing: border-box; padding: 6px 13px; border: 1px solid var(--color-border-default);">서버 단 에러<br style="tab-size: var(--tab-size)  !important; box-sizing: border-box;">예를 들어, 500은 서버 내부의 에러를 나타냅니다.</td></tr></tbody></table><!--kg-card-end: html--><h2 id="5-">5. 관계를 보여주기 위해 엔드포인트를 중첩해 사용하세요</h2><p>종종 다른 엔드포인트들은 연결되곤 합니다. 따라서 이해하기 쉽도록 중첩해 사용하세요</p><p>멀티 유저 블로그 플랫폼의 경우를 예로 들자면, 여러 게시물이 각기 다른 사용자들에 의해 작성됩니다. 따라서 엔드포인트를 <a href="https://mysite.com/posts/author" rel="nofollow">https://mysite.com/posts/author</a> 만들면 됩니다.</p><p>같은 식으로, 게시물들은 각자의 댓글들을 가지고 있기 때문에 댓글을 받아오는 엔드포인트는 <a href="https://mysite.com/posts/postId/comments" rel="nofollow">https://mysite.com/posts/postId/comments</a> 정도면 될 것 같습니다.</p><p>그렇다고 3단계 이상을 중첩하면 가독성이 떨어지기 때문에 너무 많이 중첩하지 않는 것이 좋습니다.</p><h2 id="6-">6. 데이터를 받을 때 필터링, 정렬, 페이지를 나누세요</h2><p>API의 데이터베이스가 엄청나게 클 때가 있습니다. 그럴 때는 데이터베이스에서 데이터를 받아올 때 느려질 수가 있습니다.</p><p>필터링, 정렬, 페이지 나누기를 통해 필요한 데이터만 걸러내어 요청에 대한 부담을 줄일 수 있습니다.</p><p>필터링된 엔드포인트를 예시로 들자면 다음과 같습니다. <code>https://mysite.com/posts?tags=javascript</code> 이 엔드포인트는 JavaScript 태그를 가진 게시물들을 받아옵니다.</p><h2 id="7-ssl-">7. 보안을 위해 SSL을 적용하세요</h2><p>SSL은 전송 계층 보안(Secure Socket Layer)을 나타내며, REST API 설계의 취약점을 줄이고 의심스러운 공격을 예방하는 보안에서 중요한 요소입니다.</p><p>서버와 클라이언트 사이를 비공개하고 요청한 것만큼의 데이터만 보내주는 것도 고려해야 합니다.</p><p>SSL 인증서는 등록하기 어렵지 않고, 대부분 첫 일 년은 무료입니다. 유료인 경우에도 비싼 편은 아닙니다.</p><p>REST API에서 SSL을 적용한 것과 적용하지 않은 URL에서 차이는 HTTP에 "s"의 유무입니다. <code>https://mysite.com/posts</code>는 SSL을 적용한 것이고, <code>http://mysite.com/posts</code>는 SSL을 적용하지 않은 것입니다.</p><h2 id="8-">8. 버전을 명시하세요</h2><p>REST API는 여러 버전을 지원해서 사용자들이 최신 버전이 아니더라도 사용할 수 있게 해야 합니다. 최신 버전만 지원하게 되면, 부주의하게 버전을 올릴 시 애플리케이션에 영향을 미칠 수 있습니다.</p><p>웹 개발에서 가장 흔한 버전 관리 방법은 Semantic Versioning입니다.</p><p>Semantic versioning의 한 예는 1.0.0, 2.1.2, 3.3.4 등이 있습니다. 첫 번째 숫자는 주 버전을 의미하며, 두 번째 숫자는 부 버전을 의미하고, 세 번째 숫자는 패치 버전을 의미합니다.</p><p>큰 기업부터 개인 서비스까지 RESTful API들은 다음과 같이 제공됩니다. 버전 1 : <code>https://mysite.com/v1/</code> 버전 2 : <code>https://mysite.com/v2/</code></p><p>페이스북은 자사 API를 다음과 같이 버전 관리합니다.</p><figure class="kg-card kg-image-card"><img src="https://camo.githubusercontent.com/3801c32226aefc73a504c170d86892c528af92f06c54b62d8437c38435955f79/68747470733a2f2f7777772e66726565636f646563616d702e6f72672f6e6577732f636f6e74656e742f696d616765732f323032312f30392f66616365626f6f6b2d76657273696f6e696e672e6a7067" class="kg-image" alt="Facebook" width="600" height="400" loading="lazy"></figure><p>스포티파이는 다음과 같이 제공합니다.</p><figure class="kg-card kg-image-card"><img src="https://camo.githubusercontent.com/607e2ec05f575e39099c4acb7c2c23f7652082d9936240b5f3c90f7bac7bd8e2/68747470733a2f2f7777772e66726565636f646563616d702e6f72672f6e6577732f636f6e74656e742f696d616765732f323032312f30392f73706f746966792d76657273696f6e696e672e6a7067" class="kg-image" alt="Spotify" width="600" height="400" loading="lazy"></figure><p>버전 관리에 있어 모든 API들이 위와 같이 하는 건 아닙니다. 메일침프는 좀 다르게 표기합니다.</p><figure class="kg-card kg-image-card"><img src="https://camo.githubusercontent.com/b5aee0f2ebd7aba0c978d0de132749a88febe09922a07b42e627e799ad66e904/68747470733a2f2f7777772e66726565636f646563616d702e6f72672f6e6577732f636f6e74656e742f696d616765732f323032312f30392f6d61696c6368696d702d657273696f6e696e672e6a7067" class="kg-image" alt="Mailchimp" width="600" height="400" loading="lazy"></figure><p>이런 방식으로 REST API를 설계하면 사용자들이 자신의 선택에 따라 버전을 사용할 수 있습니다.</p><h2 id="9-api-">9. 정확한 API 문서를 제공하세요</h2><p>REST API를 제작할 때, 사용자들이 쉽게 배울 수 있고 정확하게 사용할 수 있게 해야 합니다. 가장 좋은 방법은 API에 대한 좋은 문서를 제공하는 것입니다.</p><p>문서는 다음 내용들을 포함해야 합니다.</p><ul><li>해당 API에 대한 엔드포인트</li><li>해당 엔드포인트에 대한 요청 예시</li><li>다양한 언어 지원</li><li>각 상태 코드에 대한 다른 에러 메시지 리스트</li></ul><p>가장 흔히 사용하는 API 문서 툴은 Swagger입니다. API 테스트의 경우 Postman을 자주 사용합니다.</p><h2 id="-">결론</h2><p>이 문서에서 독자는 REST API를 설계할 때 명심해야 할 모범 사례들을 배웠습니다.</p><p>이 모범 사례들과 규칙들을 잘 실천해야 잘 작동하고 안전하며 API 사용자들이 손쉽게 사용할 수 있는 애플리케이션을 구축할 수 있습니다.</p><p>읽어주셔서 감사하며 앞으로는 API들을 해당 모범사례들을 적용해 만들어주시기를 바랍니다.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
