파이리v
153
2019-01-22 20:33:16
4
1102

REST API 서버 관련 질문입니다.


안녕하세요!

이번에 개인 프로젝트를 진행하면서 말로만 듣던 RESTFUL한 사이트를 만들어보려고 합니다.

구글링을 통해서 RESTFUL 한게 뭔지에 대한 개념은 대강 익혀놨습니다.

근데 검색을 하다보니 REST API 서버와 WEB 서버를 따로 두는 경우가 많은거 같더라구요

저런식으로 서버를 구성해놓고 클라이언트가 사이트에 접속을 하면 WEB 서버에서 API 서버를 호출해서

필요한 데이터를 받아오고 WEB 서버는 응답받은 데이터로 화면만 구성하는 형식인거 같은데..

여기서 궁금한게 만약 WEB서버와 API서버를 따로 둘경우에 API서버로의 모든 호출은 ajax를 이용해서 호출을 하게 되는건가요?

호출하고 응답하는 데이터는 모두 json으로 이루어지고 화면단은 angular나 react를 많이들 쓰시는거 같은데 jquery밖에 쓸줄 모르니 우선 jquery로 진행을 한다치면

우선 이해한대로 서버 구성도(?)를 그려봤는데 이게 맞는건지 모르겠습니다..

WEB 서버는 스프링부트로 만들고 여기에는 컨트롤러만 존재합니다. 페이지 이동을 위한 컨트롤러이고 각종 html이 존재할거구요.

만약, 자유게시판이 있다고 하면 컨트롤러에서 http://파이리v.com/boards 를 GET방식으로 작성을하고 

board.html을 호출 후 페이지를 이동. 그 후 board.html에서 바로 jquery ajax를 이용해서 rest api서버의 url을 호출 후 json으로 데이터를 받아오고 그 후 html에 알맞게 데이터를 추가해줍니다.

정리하자면 web서버는 컨트롤러, html, jquery ajax로만 이루어져있는거죠.

API 서버는 html은 전혀 없고 MVC에 맞게 rest컨트롤러와 서비스, 리파지토리가 있고 GET, POST, PUT, DELETE 요청에 맞게 DB와 통신을 하구요.

제가 제대로 이해를 한게 맞는지 모르겠습니다..;

평소 스프링 MVC로 프로젝트를 만들었을 때도 ajax를 이용해서 수정이나 저장, 삭제 같은건 해봤는데

조회같은 경우는 컨트롤러호출 후 DB에서 데이터를 꺼내와서 model에 담고 화면단으로 뿌려주기만 해서

페이지이동 후 ajax로 서버를 호출한 뒤 데이터를 가져와서 화면에 뿌려주는게 어색한거 같기도 하고..

이상한점 있음 답변 부탁드립니다!


0
0
  • 답변 4

  • EF
    903
    2019-01-23 10:36:57

    그림이 이상해서 틀렸다고 생각했는데 글을 마저 읽으니 맞게 알고 있는 것(?) 같네요.

    일단은 그림은 웹서버가 API를 호출한다는것 같은데, 설명은 그렇지가 않네요. 웹서버의 역할은 그냥 브라우저에 Html, js파일을 제공하는 역할만 합니다. API서버를 직접 호출하지 않죠. 실제로 API서버를 호출하는 것은 js파일을 받은 클라이언트가 실행 하는 것이죠.

    이 그림을 참고하세요:

    https://goo.gl/images/gEwhHd

    0
  • 세븐레인보우
    20
    2019-01-23 16:15:38 작성 2019-01-23 16:16:54 수정됨

    Client(browser)<-----> Front-end Sever(SpringBoot) <----> Back-end Server(SpringBoot Rest API) <---> DB(Mysql)

    정리해보면...

    1.browser와 Front-end Server 간 통신은 http(Ajax 비동기 or 동기)

    2.Front-end Server와 Back-end Server 간 통신은 http(동기)

    3. Back-end Server와 DB 간 통신은 tcp/ip

    # WEB 서버와 WAS 분리 포인트

    1. DB 접근은 Rest API 서버 만 접근 가능해야함(보안 이슈)

    2. Rest API는 WEB Server에서 만 접근 가능해야함(보안 이슈)





    0
  • 파이리v
    153
    2019-01-24 00:22:46

    EF 

    답변 감사합니다. 아 제가 그림을 이상하게 그려놨네요;; web서버에서 직접 api서버를 호출하는건 아니고

    클라이언트가 jquery ajax로 api서버를 호출하는걸 말하는거였는데ㅎㅎ

    먼저 답변 주셔서 채택해드렸습니다! 감사합니다!

    0
  • 파이리v
    153
    2019-01-24 00:25:20

    세븐레인보우

    음 EF님이 남겨주신 댓글보고 세븐레인보우님이 남기신 댓글을 보니 약간 혼란스러운데;;

    api서버는 Web서버에서만 접근 가능해야 한다는 의미는 서버단에서 서로 통신을 하는걸 말하는건가요?

    클라이언트가 js로 ajax 통신을 통해 api서버를 직접 호출한다로 이해했는데 그러면 안된다는 의미인가요?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.