WebAPI (HTTP API)
- URI는 정보의 자원을 표현해야 합니다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현합니다.
application 설정 바꿔주기 (webapiexam 어플리케이션 참고)
-
Maven Project 생성
-
pom.xml 파일은 Maven.md 파일 참고해서 복붙해주기
-
.settings파일의 org.eclipse.wst.common.project.facet.core.xml 파일에서
jst.web version을 3.1로 바꿔준 후 eclipse 다시 시작
-
Annotation을 사용할 것이기 때문에 src/main/webapp/WEB-INF/web.xml 파일 삭제
- pom.xml 파일에서 다음 프로퍼티 추가
<properties> <!-- web.xml 파일을 삭제해도 eclipse에서 오류가 발생하지 않는다. --> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>
-
src/main 에 java 폴더 생성 (class 파일이 들어갈 폴더임)
-
생성된 java 폴더에 package 생성(이름 : kr.or.connect.webapiexam.api)
- 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();
}
}