• Home
  • About
    • Jiwon Jeong photo

      Jiwon Jeong

      끊임없이 배우며 성장하는 엔지니어

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

WebAPI

27 Apr 2021

Reading time ~1 minute

WebAPI (HTTP API)

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

application 설정 바꿔주기 (webapiexam 어플리케이션 참고)

  1. Maven Project 생성

  2. pom.xml 파일은 Maven.md 파일 참고해서 복붙해주기

  3. .settings파일의 org.eclipse.wst.common.project.facet.core.xml 파일에서 jst.web version을 3.1로 바꿔준 후 eclipse 다시 시작

  4. Annotation을 사용할 것이기 때문에 src/main/webapp/WEB-INF/web.xml 파일 삭제

  5. pom.xml 파일에서 다음 프로퍼티 추가
     <properties>
         <!-- web.xml 파일을 삭제해도 eclipse에서 오류가 발생하지 않는다. -->
         <failOnMissingWebXml>false</failOnMissingWebXml>
     </properties>
    
  6. src/main 에 java 폴더 생성 (class 파일이 들어갈 폴더임)

  7. 생성된 java 폴더에 package 생성(이름 : kr.or.connect.webapiexam.api)

  8. jdbcexam 어플리케이션에서 생성한 kr.or.connect.jdbcexam.dao 패키지와 kr.or.connect.jdbcexam.dto 패키지를 복사하여 위에서 생성한 java 폴더에 붙여넣기

Roles List 가져오기

  • 생성한 kr.or.connect.webapiexam.api 패키지에 Servlet 만듦(RolesServlet.java) 후 서버 실행(Chrome 브라우저로 열기)
  • ObjectMapper() : role의 list를 json 문자열을 객체로
  • writeValueAsString(list) : list가 json으로 바뀜
    @WebServlet("/roles")
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");

		RoleDao dao = new RoleDao();

		List<Role> list = dao.getRoles(); 

		ObjectMapper objectMapper = new ObjectMapper(); //role의 list를 json 문자열을 객체로
		String json = objectMapper.writeValueAsString(list); // list가 json으로 바뀜

		PrintWriter out = response.getWriter();
		out.println(json);
		out.close();
	}

하나의 Role 가져오기

  • @WebServlet(“/roles/*”) : Path가 roles로 시작하지만 그 하위에 어떤 문자든지 올 수 있다
@WebServlet("/roles/*")
public class RoleByIdServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public RoleByIdServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("utf-8");
		response.setContentType("application/json");

		String pathInfo = request.getPathInfo(); // /roles/{roleId}
		String[] pathParts = pathInfo.split("/");
		String idStr = pathParts[1];
		int id = Integer.parseInt(idStr);

		RoleDao dao = new RoleDao();

		Role role = dao.getRole(id);

		ObjectMapper objectMapper = new ObjectMapper();
		String json = objectMapper.writeValueAsString(role);

		PrintWriter out = response.getWriter();
		out.println(json);
		out.close();
	}

}

Servlet으로 이렇게 다 구현하려니 너무 번거롭다

그래서 나온것이 Spring Framework



WebProgrammingservletjsptomcat Share Tweet +1