🌌 Server

[REST] (Representational State Transfer)

ryang x2 2020. 10. 30. 17:45
728x90
반응형

# REST (Representational State Transfer) 

자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미합니다. 
* 휴대폰앱 개발시 반드시 필요한 사항이므로 기억해둔다!
* 프로그램을 담는 형식이지 짜는 형식은 아니다.!

 

● 용어 

1. 자원 : 소프트웨어가 관리하는 모든 것(이미지, 데이터, 문서 .. ) 
2. 자원의 표현 : 해당 자원을 표현하기 위한 이름 
3. 정보 전달 : 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달합니다. xml 또는 json을 통해 데이터를 주고 받는 것이 일반적입니다.

 

● 장점

1. HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없습니다. 
2. HTTP 표준 프로토콜에 따른 모든 플랫폼에서 사용이 가능합니다. 
3. 서버와 클라이언트의 역할을 명확하게 분리합니다. 


단점 

1. 표준이 존재하지 않습니다. 
2. 사용할 수 있는 메소드 형태가 제한적입니다. 
3. 구형 브라우저가 아직 지원되지 않는 부분이 존재합니다.

 

예시 1) doGet 방식 

form.jsp

<title>데이터 보내기</title>
</head>
<body>
	<h2>데이터 보내기</h2>
	<form action="./formtest1" method="get">
		메세지 : <input type="text" name="msg"> <input type="submit"value="보내기">	
	</form>
</body>

sevlet

@WebServlet(name="FormTest1", urlPatterns= {"/formtest1"})
public class FormTest1Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FormTest1Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		System.out.println("doGet 호출");
		String msg = request.getParameter("msg");
		System.out.println(msg);
	}

}

 

예시 2) doPost 방식 

<title>데이터 보내기</title>
</head>
<body>
	<h2>데이터 보내기</h2>
	<form action="./formtest1" method="post">
		메세지 : <input type="text" name="msg"> <input type="submit"value="보내기">	
	</form>
</body>
@WebServlet(name="FormTest1", urlPatterns= {"/formtest1"})
public class FormTest1Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FormTest1Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		System.out.println("doPost 호출");
		String msg = request.getParameter("msg");
		System.out.println(msg);
	}

}

 

# postman 설치 후 body로 확인하기 ! 

@WebServlet(name = "FormTestServlet2", urlPatterns={"/formtest2"})
public class FormTestServlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int firstNum = Integer.parseInt(request.getParameter("firstNum"));
        int secondNum = Integer.parseInt(request.getParameter("secondNum"));
        int result = firstNum + secondNum;

        PrintWriter out = response.getWriter();
        out.print(result);
    }

 

 

728x90
반응형