[Web] Web API


  • WEB API 디자인시 중요한 사항
    • URI는 정보의 자원을 표현해야 한다.
    • 자원에 대한 행위는 HTTML Method(GET, POST, PUT, DELETE)로 표현한다
      • GET : GET을 통해 해당 리소스를 조회한다. 리소스를 조회하고 해당 document에 대한 자세한 정보를 가져온다.
      • POST : 해당 RUI를 요청하면 리소스를 생성한다.
      • PUT : 해당 리소스를 수정한다.
      • DELETE : 리소스를 삭제한다.
    • URI : Uniform Resource Identifier - 인터넷상의 자원을 식별하기 위한 문자열
    • URL : Location - 인터넷상 자원의 위치

HTTP Method로 표현 할 때 위 HTTP Method가 아닌 다른 동사가 uri에 들어가서는 안된다. 슬래시 구분자(/)는 계층을 나타낼 때 사용하며 URI의 마지막 문자로 / 가 포함되지 않는다. 언더바(_)는 사용하지 않으며 하이픈(-)은 URI 가독성을 높이고 싶은 경우에만 사용한다. URI경로는 소문자만 사용하며 URI 스키마와 호스트를 제외하고는 대소문자를 구별한다. 또한 파일 확장자는 URI에 포함하지 않는다.

  • 상태코드
    • 2XX : 성공
    • 4XX : 클라이언트의 요청이 잘못되었을 때
      • 401 : client가 인증되지 않은 상태에서 보호된 리소스를 요청하는 경우
      • 404 : client가 요청한 리소스에서는 사용 불가능한 method를 이용했을 경우
    • 5XX : 서버에 문제가 있는 경우

  • json : java script object notation의 약어. 아주 가벼운 형태의 메세지 교환 형식. 자바스크립트에서는 객체로 만들 떄 사용하는 표현식이기도하다.
    •  [] : 배열,리스트
    •  {} :객체 한 건 

Maven이 이미 설치되어있는 dependency library 임에도 불구하고 인식을 못한다면 이클립스를 종료한다음 사용자폴더에 .m2 디렉토리를 삭제하고 이클립스를 다시 실행하여 Mavnen>update project를 수행하고 다시 실행해보자. 


  • 예제 : Maven webapp 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
@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();
    }
}
 
cs

이런 작업들을 편리하게 해주는 도구가 SpringFramework 이다!

No comments:

Powered by Blogger.