올바른 REST API 디자인 사례 : API 설계 가이드 🥰

API에는 다양한 타입이 있죠. API는 프론트엔드, 백엔드 개발자 모두에게 중요한 개발 요소입니다. API를 통해 서버와 클라이언트가 소통하듯이 좋은 API 설계는 각 파트 간 개발자들의 소통에도 중요합니다. 그 중 REST API 설계 사례를 통해 어떻게 API를 구현하는 게 좋은지 알아보도록 하겠습니다!


  1. API란?

    • API(Application Programming Interface)는 다양한 소프트웨어 간의 커뮤니케이션 채널입니다.

    • API 요청을 전송하는 클라이언트 <-> API 응답을 전송하는 서버

  2. API 프로토콜의 타입들

    • REST : API의 프론트엔드와 백엔드를 분리하고, 개발과 구현에 유연성을 제공하는 클라이언트 <-> 서버 접근 방식 사용

    • RPC : 여러 매개 변수를 보내고 결과를 받는 방식을 사용

    • SOAP : HTTP, SMTP, TCP 등 인터넷의 광범위한 통신 프로토콜을 지원

    • WebSocket : 지속적 연결을 통해 브라우저와 서버 간 데이터를 교환하는 방법을 지원

  3. 잘 정의된 API란 무엇인가? 😮

    • 동사 대신 명사 사용하기

      • 엔드포인트 경로 이름에는 개체를 식별할 수 있는 명사를 사용하기

        /getAllClients ->/clients

    • 복수형 명사 사용하기

      • 리소스 명사에는 복수형을 사용하기

        /employee/:id/ -> /employees/:id/

    • 일관성 유지하기

      • 하나의 리소스에 대해 동일한 사례, 모든 엔드포인트에 대한 동일한 인증 방법, 동일한 헤더, 동일한 상태 코드를 사용하기

    • 심플하게 유지하기

      • 모든 엔드 포인트의 이름을 리소스 지향적으로 설정하기

        /users 모든 유저

        /users/124 특정 유저

    • 적절한 상태 코드 만들기

      • HTTP 상태 코드를 너무 많이 사용하지 말고 API 전체에서 동일한 결과에 대해 동일한 상태 코드 사용하기

        200 for general success

        201 for successful creation

        202 for a successful request

        204 for no content .....

    • 일반 텍스트(Plain text)를 반환하지 않기

      • JSON 형식의 문자열로 본문을 반환하는 것만으로는 충분하지 않음. Content-Type 헤더를 application/JSON으로 지정해야 함

    • 적절한 오류 처리 수행하기

      • 오류를 적절히 처리하고 무슨 일이 일어 났는지 나타내는 응답코드(400 ~ 5xx)를 반환하기. 상태코드와 함께 응답 본문에 일부 세부 정보를 반환해야 함

    • 좋은 보안 관행을 갖추기

      • 예외 없이 SSL/TLS를 사용하기. 만료 날짜가 있는 사용자 정의 HTTP 헤더를 사용하여 전달 되어야 하는 API키 인증을 허용하기

    • 페이지 매기기

      • API가 많은 페이지를 반환하는 경우 page, page_size를 삽입하기

        /products?page=10&page_size=20

    • 버전 관리하기

      • API 사용자가 다를 수 있으므로 첫 번째 버전부터 API 버전을 지정하기

        /products/v1/4



위의 글은 아래 Medium 글을 번역해 가져온 것인데요.

더 자세한 설명을 원하신다면 아래의 링크를 참고해 보세요!


https://medium.com/@techworldwithmilan/rest-api-design-best-practices-2eb5e749d428


REST API Design Best Practices

Medium

REST API Design Best Practices

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 2월 13일 오전 7:55

 • 

저장 552조회 15,050

댓글 1

    함께 읽은 게시물

    2019년에 저희 팀에서 퍼블리싱한 CHI 논문. 음성 인터페이스 입코딩을 이용한 프로그래밍 교육.

    ... 더 보기

    난임 스타트업 '오키드헬스'는 배아를 대상으로 향후 발병 소지가 있는 수천 가지 질병을 검사하는 서비스를 제공한다. 이 서비스를 통해 예비 부모는 자녀의 유전 정보를 이전보다 훨씬 더 많이 알 수 있다.

    ... 더 보기

    유전 데이터로 아기 선별해 낳는다?…美 스타트업 '슈퍼베이비' 논란

    n.news.naver.com

    유전 데이터로 아기 선별해 낳는다?…美 스타트업 '슈퍼베이비' 논란

    조회 180



    📚 알아두면 좋은 ‘영어 개발 용어’ 11개

    프로그래밍에서 특정 단어는 영어의 사전적 의미와는 비슷하지만 다른 의미로 쓰입니다. 프로그래밍을 시작하신지 얼마 안되었다면 이런 단어들을 처음 봤을 때 사전적 의미 그대로 해석하여 혼란스러우실 수 있는데요. 알아두면 좋을 개발 영어 용어 11개를 가져왔습니다 :) --- "알아두면 좋은 영어 개발 용어" 1. Agnostic (사전적 의미: 불가지론의) ‘구애받지 않는 것’이라는 뜻을 가집니다. 대체로 어떤 것에 국한되지 않는 프로그램이나 기술을 표현할 때 사용됩니다. `Nestjs is platform-... 더 보기

    GitHub - meotitda/DICTIONARY: 📚한글-English 개발 사전

    GitHub

    GitHub - meotitda/DICTIONARY: 📚한글-English 개발 사전

     • 

    저장 204 • 조회 9,141


    AI들 코딩 스타일이, GPT는 구글같고, Claude는 메타같음. Gemini는 부트캠프..🫢


    그래서 응용레벨 코딩에는 Claude가 낫고, 로우레벨 코딩에는 GPT가 나은 편.


    * 당연하지만 개인적인 느낌일 뿐 입니다.


    요즘처럼 기업의 윤리경영이 화두가 된 적이 없는 것 같다. 과거에는 일종의 면죄부가 있었다. “능력이 있으면 되지, 도덕성까지 요구할 수 있나?”는 의식이 은연중에 자리 잡고 있었다.

    ... 더 보기

    [CEO 심리학] 도덕성과 능력은 별개?…한몸처럼 움직여야 이득 - 매일경제

    매일경제

    [CEO 심리학] 도덕성과 능력은 별개?…한몸처럼 움직여야 이득 - 매일경제