[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: