HTTP method

2024. 8. 11. 14:19·spring & java

HTTP 메서드란?

클라이언트와 서버 사이에 이루어지는 Request와 Response 데이터를 전송하는 방식을 말한다.

요청 메서드를 정의하며, 주어진 리소스에 수행하길 원하는 행동을 나타내는 것을 의미한다고 볼 수 있다.

 

HTTP Method의 종류

- GET : 조회 (서버로부터 데이터를 취득한다.)

- POST : 등록 (서버에 데이터를 추가, 작성한다.)

- PUT : 수정 (서버의 데이터를 갱신한다.)

- DELETE : 삭제 (서버의 데이터를 삭제한다.)

- HEAD : 서버 리소스의 헤더 (get과 동일하지만 서버에서 body를 return 하지 않음)

- CONNECT : 프록시 동작의 터널 접속을 변경

- OPTIONS : 리소스가 지원하고 있는 메소드의 취득

 

 

idempotent 란?

여러 번 수행해도 결과가 같음을 의미한다.

호출로 인해 데이터가 변형되지 X

 

GET 요청은 idempotent 함

POST 요청은 idempotent 하지 않음 -> 항상 같은 결과물이 나오는것을 보장하지 않는다

 


 

 

RESTful API란?

 

REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 떄문에  웹의 장점을 최대한 활용할 수 있는 아키텍쳐 스타일이다.

resource의 representation에 의한 상태 전달

REST 원리를 따르는 시스템을 RESTful이라고 함!!

 

장점

-  HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API사용을 위한 별도의 인프라를 구축할 필가 없다.

-  HTTP 표준 프로토콜에 따르는 모든  플랫폼에서 사용이 가능하다.

-  HTTP 이점 가져올 수 있음!(무상태, 캐시처리 등등)

 

 

모든 관련된 동작을 URl을 통해 알려주기 떄문에 클라이언트가 API의 변화에 일일이 대응하지 않아도 된다.

 

URL 설계 원칙 

RESTful API의 설계 목표중 중 하나는 사용의 단순성과 성능을 최적화 하는 것

클라이언트가 서버의 작업에 영향을 미치지 않음!!

시스템을 무상태로 만들어, 각 요청이 독립적이고 서로 영향을 주지 않도록 한다. 

 

1. 명확하고 직관적인 구조 사용

 사용자에 대한 정보를 다루는 API의 경우 /users 로 시작하는 경로 사용, 특정 사용자에 대한 정보는 

/users/{id}와 같이 표현

 

2. 명사 사용과 복수형 표현

리소스에 대한 대표명으로 명사를 사용해야 한다. 

여러 사용자를 나타낼 때는 /users와 같이 복수형을 사용하고, 단일 리소스에는 /users/{id}와 같이 구체적인 식별자를 사용한다. 

 

3. CRUD 기능을 HTTP 메서드에 매핑

URL을 통해 특정 동작을 명시하지 않아도 된다. 

GET /users는 사용자 목록 조회

POST /users는 새로운 사용자 생성

 

4. 경로 변수의 사용 최소화

경로 변수는 필요한 경우에만 사용해야 하며, URL이 복잡해지는 것을 방지해야 한다. 

 

5. 쿼리 매개변수로 필터링, 정렬 및 페이징 지원

리소스 컬렉션에 대한 접근 시 쿼리 매개변수를 사용하여 이를 지원한다.

예를 들어 특정 사용자의 게시물을 최신 순으로 조회하고 싶다면, /users/{id}/posts?sort=date

 

 

 

 

 

 

 

'spring & java' 카테고리의 다른 글

쿠키 & 세션 / JWT  (1) 2024.08.22
JPA 영속성 컨텍스트 / 영속성 전이  (0) 2024.08.13
스프링 MVC / 기본 애노테이션 정리  (0) 2024.07.08
싱글톤 패턴 기초  (1) 2024.02.19
[java] Map 사용방법  (0) 2024.01.25
'spring & java' 카테고리의 다른 글
  • 쿠키 & 세션 / JWT
  • JPA 영속성 컨텍스트 / 영속성 전이
  • 스프링 MVC / 기본 애노테이션 정리
  • 싱글톤 패턴 기초
zioni
zioni
  • zioni
    jiwon's dev.log
    zioni
  • 전체
    오늘
    어제
    • 분류 전체보기 (76)
      • spring & java (13)
      • Algorithm (14)
      • PS (37)
      • project (3)
      • experience (1)
      • etc (6)
      • study (2)
  • 블로그 메뉴

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

    • Github
  • 공지사항

  • 인기 글

  • 태그

    자바
    백준2525
    java
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
zioni
HTTP method
상단으로

티스토리툴바