Develop/Java

gradle3 API server

크레이지제이 2021. 11. 13. 18:53
반응형

gradle3 API server

간단하게 더하기 서버 만들기2

  • POST 방식으로 JSON 형식으로 데이터를 보내고 받기로 한다.

서블릿에서 입력 추출

  • 입력값을 읽어 그대로 출력하도록 했다.
  • GET 방식은 사용안함. POST만 처리하도록 수정.
@WebServlet("/add")
public class Add extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws IOException,ServletException {
      PrintWriter out = response.getWriter();
      out.write("not support get!");
}

  @Override
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws IOException,ServletException {
        process(request, response);
  }

  public void process(HttpServletRequest request, HttpServletResponse response)
  throws IOException,ServletException {
      BufferedReader br = request.getReader() ;
      char[] cbuf = new char[request.getContentLength()] ;
      br.read(cbuf) ;
      String input = new String(cbuf) ;
      System.out.println("/add: INPUT="+input);

      PrintWriter out = response.getWriter();

      out.write(input);
    }
}
  • 브라우저로 localhost:8080/addserver/add 접속하면 "not support get!" 이라고 출력.
  • POST 방식으로 보낼수 있는 크롬 툴을 써서 테스트. (ARC 를 사용)

https://user-images.githubusercontent.com/6326475/141604330-2844e04b-014d-4abc-a5d4-19c849df2b29.png

  • POST 입력값을 그대로 출력하는 것을 확인하였다.

JSON 형식으로 받아 출력하도록

  • https://user-images.githubusercontent.com/6326475/141604392-4425a2dc-8cf8-4531-8fe2-37738f208e8d.png

  • 위 사이트에서 JSON 라이브러리를 찾아 추가한다. 아래 Gradle 형식으로 추가하려면 어떻게 해야 하는지 나온다. 복사하여 붙여넣기.

  • app/build.gradle에 위 한줄을 추가한다.

...
dependencies {
...
    implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
...
}
...

기능 구현

  • JSON 형식으로 받고, 출력한다.
public void process(HttpServletRequest request, HttpServletResponse response)
  throws IOException,ServletException {
      BufferedReader br = request.getReader() ;
      char[] cbuf = new char[request.getContentLength()] ;
      br.read(cbuf) ;
      String input = new String(cbuf) ;
      System.out.println("/add: INPUT="+input);

      PrintWriter out = response.getWriter();
      response.setContentType("application/json");

      JSONObject jret = new JSONObject() ;
      JSONParser jp = new JSONParser() ;
      try {
            JSONObject jobj =  (JSONObject) jp.parse(input);
            System.out.println("name="+jobj.get("name"));
            System.out.println("age="+jobj.get("age"));
            long a, b ;
            a = (Long)jobj.get("a");
            b = (Long)jobj.get("b");
            jret.put("sum", a+b) ;
      } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
      }
      out.write(jret.toJSONString());
    }

https://user-images.githubusercontent.com/6326475/141604596-1dd577f0-20cf-4bee-9b2d-16dc6352700c.png