본문 바로가기
웹개발/REST API

REST API 간단정리

by heavenLake 2022. 7. 1.
반응형

/////////////////////////
///// Rest API ////
/////////////////////////

- REST API란
 데이터 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
 REST API라는게 크게 어렵게 생각할 필요 없이 그냥 보통 웹서비스 인데. 
 일반 웹처럼 view를 리턴해주는게 아니고
 요청에 따른 정보를 Json이나 XML등으로 데이터값을 리턴해주거나 요청에 따라 데이터를 저장, 삭제해주는 서비스이다.
 그리고 그역활을 @RestController을 사용한다(@Controller 와 @ResponseBody를 합쳐놓은 어노테이션이다)
 ( 일반 웹에서도 Ajax로 요청하고 데이터 받을때 @ResponseBody를쓰면 뷰가 아닌 값자체를 리턴해주는 형태와 
 같다고 생각하면 쉬울듯, 

 단지 요청에 주체가 같은웹이 아님 타서비스에서 이기종간 특정 규칙을 새워놓고 정보를 주고받는 것)

REST API를 서비스하기 위해서는 몇가지 지식이 필요하다.

1. API 설계 

    CRUD Operation
    Create : 생성(POST)
    Read : 조회(GET)
    Update : 수정(PUT)
    Delete : 삭제(DELETE)
    HEAD: header 정보 조회(HEAD)
   위와 같이 RequestMethod를 구분해서 설계해야한다.

   (프로젝트마다 다르겠지만 보통 실무에서는 POST와 GET으로 사용한다.)
   
2. 스웨거 
    외부 개발자를 위한 swagger를 제공해주고, API를 호출해서 사용할수 있는 가이드를 만들어 줘야한다.

    (SPRING에서 자동 생성해주는 라이브러리 존재. 주의할점은 spring-boot버전에 따라 swagger버전도 호환문제가 생긴다.)

3. 접근제어(보안)
    - (인프라)API Gate??
    - (인프라)DMZ / gateway
    - JWT
    - 토큰 발급 및 확인
    - SSO
    - JPA
    - AOP

 =>> 위 내용은 AA나 설계자 할일들 포함이고 일반 개발자는 @RestController이용 POST,GET등 구분해서
     일반 웹 컨트롤러 서비스 만들 듯 개발하면 되고 리턴만 뷰가 아닌 

     ResponseEntity등에 결과값을 담아서 return하면 된다. 
     ResponseEntity란? => 간단히 얘기하면 (json타입으로?) Header, Body, Data(리턴값)을 담고있는객체  

                                      사용법은 간단하고 밑에 예제보면 바로 알수 있다.
 
- 스프링부트 프로젝트 생성하기.
    참고책 : 교보문고) eBook] 프로젝트 생성 참고.
    참고:https://heavenlake.tistory.com/116

 

Spring Boot 프로젝트 생성

출처: https://daslyee.tistory.com/80 [Daslyee:티스토리] 1. 다운로드 : https://spring.io/tools 2. 여기서는 윈도우용으로 다운로드 후 jar 파일을 설치(더블클릭) 그렇다면 해당 폴더가 보일 것이고, 들..

heavenlake.tistory.com

 

- 교보문고)  eBook] 실전 스프링 부트 REST API개발
    해당 eBook 예제들을 실행해보려면, 그냥 프로젝트 임포트로는 안되고
    STS에서 프로젝트 생성후 src를 덮어씌우고 실행해보면 된다.
    (프로젝트 생성시 페키지는 org.hdcd 프로젝트명은  \src\main\java\org\hdcd 밑에
    xxxApplication.java 라는 파일이 있을텐데 xxx를 프로젝트명으로 생생해줘야 스프링부트가 정상적으로 작동한다.
    스프링부트가 작동할때 '프로젝트명Application.java'를 찾아서 실행함)

스프링부트 + @RestController(서버단) + Ajax(클라이언트단) 초간단소스 
    eBook] 실전 스프링 부트 REST API개발 에 3장 참고 
    예제 : WebDevA00Rest02RestClientJQuery (CH0302)
    서비스를 제공하는 서버단, 그 서비스를 받아가는 클라이언트단.
    예제라 서버단하고 클라이언트단이 같이 있는거고 실제로는 서로 따로 구현되겠지.!!
 
     실행방법 : http://localhost:8080/ajaxHome
        접속해서 값넣고 밑에 있는 버튼들 (BoardController)호출해보기.

- Swagger
    eBook] 실전 스프링 부트 REST API개발 에 3.4장 참고 
    예제를 실행해봤지만 오류발생... 잘 안됨.

- Controller (@RestController) 요청/응답
    예제 : WebDevB01Response01 (CH0701)
    
- 요청 처리 (매개변수 받기) Annotation  
    A. 요청
    @PathVariable
        URL에서 경로 변수 값을 가져오기 위한 애너테이션
        URL 경로 상의 경로 변수값을 @PathVariable 애너테이션을 지정하여 문자열 매개변수로 처리한다.
        ex:
            @RequestMapping(value = "/{boardNo}", method = RequestMethod.GET)
            public ResponseEntity<Board> read(@PathVariable("boardNo") int boardNo) 
            {
            }
    @RequestParam
        요청 파라미터 값을 가져오기 위한 애너테이션
        ex: (CH0802)
            @RequestMapping(value = "/register04", method = RequestMethod.POST)
            public ResponseEntity<String> register04(@RequestParam("userId") String userId
                                                  , @RequestParam("password") String password)
            {
            }
    @RequestHeader
        요청 헤더 값을 가져오기 위한 애너테이션
        ex : CH0803
    @RequestBody
        요청 본문 내용을 가져오기 위한 애너테이션
        ex : CH0804
    @CookieValue
        쿠키 값을 가져오기 위한 애너테이션
        ex : CH0805

 

 

 

 

 

Spring Boot 프로젝트 생성

출처: https://daslyee.tistory.com/80 [Daslyee:티스토리] 1. 다운로드 : https://spring.io/tools 2. 여기서는 윈도우용으로 다운로드 후 jar 파일을 설치(더블클릭) 그렇다면 해당 폴더가 보일 것이고, 들..

heavenlake.tistory.com

 

반응형

댓글