스프링부트 - http 연결, 상태 코드 RESTAPI

Wald Eisen·2023년 7월 20일

study

목록 보기
18/26

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

http는 요청과 응답으로 구성되어있고

클리이언트가 요청을하면
서버가 응답을 하는 구조로 되어있다.

화면을 가져오는건 컨트롤러 역할,
화면의 삭제 수정은 레스트컨트롤러 역할

http 메소드 - 요청

GET
POST
PUT
DELETE

http 상태 코드들 - 응답

200: 정상

(400 구간은 이용자의 잘못이 다수,)
400: 유저가 잘못 요청함
401: 로그인 안함.

  • unauthenticated(권한)
  • unauthorized(로그인)
    403: 권한 없음
    404: 페이지 없음
    405: 이상한걸 보냈다. GetMapping에서 설정한 메소드와 다른걸 보냄.

(500 구간은 개발자의 잘못한것이 일반적)

REST API 란?


타입리프가 뷰리졸버 => 폴더검색에서 모델을 입력해주는 역할이다.

https://meetup.nhncloud.com/posts/92

  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다.
  • 애플리케이션이나 디바이스가 서로 간에 연결하여 통신할 수 있는 방법을 정의하는 규칙이다.
  • 하나의 애플리케이션이나 서비스가 다른 애플리케이션이나 서비스 내의 리소스에 액세스할 수 있게 해주는 메커니즘

RESTAPI 디자인시..

첫 번째, URI는 정보의 자원을 표현해야 한다.
두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

  • 1) URI는 정보의 자원을 표현해야 한다. (리소스명은 동사보다는 명사를 사용)

GET /members/delete/1

위와 같은 방식은 REST를 제대로 적용하지 않은 URI이다.
URI는 자원을 표현하는데 중점을 두어야 하고
delete와 같은 행위에 대한 표현이 들어가서는 안된다.

  • 2) 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)로 표현

위의 잘못 된 URI를 HTTP Method를 통해 수정해 보면

DELETE /members/1

으로 수정할 수 있다.
회원정보를 가져올 때는 GET,
회원 추가 시의 행위를 표현하고자 할 때는 POST METHOD를 사용하여 표현.


회원정보를 가져오는 URI

GET /members/show/1     (x)
GET /members/1          (o)

회원을 추가할 때

GET /members/insert/2 (x)  - GET 메서드는 리소스 생성에 맞지 않습니다.
POST /members/2       (o)

HTTP METHOD의 알맞은 역할

POST, GET, PUT, DELETE 이 4가지의 Method를 가지고 CRUD를 할 수 있습니다.

  • POST: POST를 통해 해당 URI를 요청하면 리소스를 생성합니다.
  • GET: GET를 통해 해당 리소스를 조회합니다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다.
  • PUT: PUT를 통해 해당 리소스를 수정합니다.
  • DELETE: DELETE를 통해 리소스를 삭제합니다.

다음과 같은 식으로 URI는 자원을 표현하는 데에 집중하고 행위에 대한 정의는 HTTP METHOD를 통해 하는 것이 REST한 API를 설계하는 중심 규칙이다.


우선 main 컨트롤러에 새로 하나를 만들어보자.

@Controller
public class MainControllerAPiV1 {
    @Autowired
    private MainService mainService;

    //Body라는 데이터를 보내겠다.
    //응답할때 화면이 아니라 데이터를 보낸다.
    @GetMapping("/api/v1/main")
    public @ResponseBody List<ResMainDTO> getMainData(){
        return mainService.getMainPageData();
    }
}

거대 사이트들은 무언가를 뜯어고쳐 버전을 올릴려면 뭔가 할게 많다.
그렇기에 다른 함수를 생성하는것과 가깝다.

responsebody의 사용법?

이러면 해당 메서드 하나에만 적용되고.

이러면 모든 메서드에 적용된다

0개의 댓글