티스토리 뷰

728x90
반응형

API 와 REST 와 REST API 와 Restful API

채용공고에서 백엔드 개발자의 자격요건이나 업무 내용에서 많이 볼 수 있는 용어인데요.

API와 Restful API가 무엇일까요?

 

API (Application Programming Interface)

 

웹 API는 클라이언트와 웹리소스 사이의 게이트웨이 라고 생각할 수 있습니다.

 

클라이언트

  • 클라이언트는 웹에 접근하려는 사용자를 의미합니다.
  • 클라이언트는 API를 이용하는 사람이거나, 소프트웨어 시스템일 수 있습니다.

 

리소스

리소스는 다양한 애플리케이션이 클라이언트에게 제공하는 정보 입니다.

리소스는 이미지, 동영상, 텍스트, 숫자 또는 모든 유형의 데이터일 수 있습니다.

서버는 클라이언트에게 리소스를 제공하는 시스템을 의미합니다.

조직은 API를 사용하여 리소스를 공유하고,  보안과 제어 및 인증을 유지하면서 웹서비스를 제공합니다.

API 는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.

API는 다른 소프트웨어 시스템과 통신하기 위해 지켜야하는 규칙을 정의합니다.

개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성합니다.

 

애플리케이션 (Application)

애플리케이션(Application)은 고유한 기능을 가진 모든 소프트웨어를 나타냅니다.

 

인터페이스(Interface)

인터페이스(Interface) 는 두 애플리케이션 간의 서비스 계약이라고 할 수 있습니다.

이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의 합니다.

API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어있습니다.

실제 API문서에서 사용하고 있는 예로는 Swagger 가 있습니다.


Swagger

Swagger 란 무엇인가요?

  • Swagger 은 REST API 를 설계, 빌드, 문서화 및 사용하는데 도움이 되는 Open API 사양을 중심으로 구축된 오픈소스 도구 세트 입니다.

 

Swagger 을 왜 사용할까요?

  • 적용하기 쉽습니다.
  • 테스트할 수 있는 UI를 제공합니다. 즉, 문서화면에서 바로 API를 테스트 할 수 있습니다.

 


REST (REpresentational State Transfer)

REST자원(resource)을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다.

HTTP URI(Unitorm Resource Identifier)를 통해 리소스를 명시하고

HTTP Method 를 통해 해당 자원(URI)에 대한 CRUD Operation 을 적용하는 것을 의미합니다.

REST 는 '자원', '행위', '행위에 대한 내용' 으로 구성되어 있습니다.

  • 자원(Resource): HTTP URI
  • 자원에 대한 행위(Verb): HTTP Method
  • 자원에 대한 행위의 내용(Representations): HTTP Message Payload

 

CRUD Operation

  • Create : 데이터생성
  • Read: 데이터 조회
  • Update: 데이터 수정
  • Delete: 데이터 삭제 로 되어 있습니다.

 

RESTful

RESTful 이란 REST의 원리를 따르는 시스템을 의미합니다.


HTTP Header

HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해줍니다.

여기서 부가적인 정보는 요청자, Content Type, 캐싱 등 이 있습니다.

HTTP 헤더에는 General Header, Request Header, Response Header, Entity Header 4가지가 있습니다.

 

General Header

요청과 응답 모두에 적용되지만, 바디영역에서 최종적으로 전송되는 데이터와는 관련없는 헤더입니다.

 

Request Header

패치된 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더 입니다.

클라이언트가 서버에게 보내는 메시지 헤더입니다.

 

Response Header

위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더 입니다.

서버로부터 받은 메시지의 헤더 입니다.

 

Entity Header

컨텐츠 길이나 MIME 타입과 같이 Entity Body에 대한 자세한 정보를 포함하는 헤더 입니다.

 


TDD (Test Driven Development)

TDD  테스트 주도 개발 입니다.

 

작은단위의 테스트케이스를 작성하고, 이 테스트 케이스를 통과하는 코드를 추가하는 단계를 반복하고 구현합니다.

테스트 코드를 먼저 작성하는 개발방법론 입니다.

테스트 코드를 작성해야되는 이유

깔끔한 코드를 작성할 수 있습니다.

장기적으로 개발 비용을 절감할 수 있습니다.

개발이 끝나면 테스트코드를 작성하는 것은 매우 귀찮습니다.

 


TDD의 개발방식

 

 

TDD는 테스트코드를 작성한 뒤에 실제코드를 작성합니다.


단위테스트(Unit Test) 가 무엇인가요?

  • 애플리케이션의 가장 작은 단위를 테스트 하는 것을 의미합니다.
  • 단위테스트는 TDD에 속합니다.
  • 단위테스트는 나중에 찾기 어려운 코드의 결점을 찾아낼 수 있습니다.
    그러므로 개발자는 개발할 때 반드시 단위테스를 작성해야합니다.

  • 단위테스트의 범위는 하나의 기능 또는 하나의 클래스를 대상으로 합니다.

TDD의 장점

튼튼한 객체지향적인 코드를 생산합니다.

  • 코드의 재사용성 보장을 명시합니다.
  • 철저한 모듈화가 이뤄집니다.
  • '종속성' 과 '의존성' 이 낮은 모듈로 조합된 소프트웨어 개발을 가능하게 합니다.
  • 필요에 따라 모듈 추가/제거 를 해도 소프트웨어의 전체구조에 영향을 미치지 않게 합니다.

 

재설계 시간을 단축시킵니다.

  • 테스트 시나리오를 작성하면서 다양한 예외 사항에 대해 생각해보고 대비할 수 있습니다.

 

디버깅시간을 단축시킵니다.

  • 유닛테스트 이점은 디버깅 시간을 단축시킵니다.
  • TDD는 자동화된 유닛테스트를 전제하므로 특정버그를 쉽게 찾을 수 있습니다.

 

테스트 문서 대체가 가능합니다.

  • 개발이 완료된 소프트웨어에 어떤 기능을 추가할 때, 가장 우려되는 점은 추가된 기능이 기존코드에 어떤 영향을 미칠지 알기가 어려운점 입니다.
  • TDD는 유닛테스트를 전제하므로 테스트기간을 단축시킬 수 있습니다.

 

TDD 가 어려운 이유가 무엇일까요?

  • 많이 체득될 수록 바꾸기가 어려우며, 자신이 개발하던 방식을 바꿔야합니다.
  • 도구(단위테스트, 프레임워크)와 규칙에 집착하게 됩니다.

 


[참고자료]

 

[네트워크] REST API란? REST, RESTful이란?

REST API란 REST를 기반으로 만들어진 API를 의미합니다. REST API를 알기 위해 REST부터 알아보도록 하겠습니다. REST란? REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원..

khj93.tistory.com

 

RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS

 

aws.amazon.com

 

[기술면접] TDD(Test-Driven-Development) 방법론에 대해서

TDD(Test-Driven-Development) 방법론에 대해서 파헤쳐보자! ❓ TDD가 무엇입니까? - TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은.

wooaoe.tistory.com

 

What is Unit Testing? Definition from WhatIs.com

This definition explains unit testing, where the smallest testable parts of an application, called units, are independently tested.

www.techtarget.com

 

 

[TDD] 단위 테스트와 TDD(테스트 주도 개발) 프로그래밍 방법 소개 - (1/5)

이번에는 여러 개발 서적들 및 실무 경험 그리고 시행 착오 등을 겪으면서 얻은 테스트 주도 개발 방법에 대해 소개해보고자 합니다. 이번 포스팅에서는 먼저 단위 테스트와 중요성 그리고 단위

mangkyu.tistory.com

 

 

HTTP Header 이번에 확실히 정리하고 가세요!

Http Header와 항목을 공부하자!

velog.io

 

[Network] HTTP 헤더의 종류 및 항목 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io


긴글을 읽어 주셔서 감사합니다.

용어에 대한 추가 설명이나 잘못된 부분이 있으면 코멘트로 남겨주시면 반영하도록 하겠습니다. 감사합니다 :)

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함