HTTP(API설계)
URI의 설계방법

위의 그림과 같이 만들면 안된다
중요한 것은 회원 이라는 리소스(자원)이기 때문에 리소스만 놓고 최대한 컬렉션을 활용해서 만든다
즉 동사,목적어 등 주어를 뺀 것은 적지 않는것이 좋다
POST기반 등록 API설계법(회원)
・ 회원목록 /members -> GET
・ 회원등록 /members -> POST
・ 회원조회 /members/{id} -> GET
・ 회원수정 /members/{id} -> PATH, PUT, POST
・ 회원삭제 /members/{id} -> DELETE
PUT기반 등록 API설계법(파일등록)
・ 파일목록 /files -> GET
・ 파일조회 /files{filename} -> GET
・ 파일등록 /files{filename} -> PUT
・ 파일삭제 /files{filename} -> DELETE
・ 파일 대량 등록 /files -> POST
PUT을 사용할 때 특징
・ 클라이언트가 리소스 URL을 알고있어야 한다
- 파일등록 /files/{filename} -> PUT // 회원등록 /members -> POST(POST기반)
- PUT /files/star.jpg 와 같이 알고있어야 한다
・ 클라이언트가 직접 리소스의 URL을 지정한다
・ 스토어
- 클라이언트가 관리하는 리소스 저장소
- 클라이언트가 리소스의 URL을 알고 관리
- 여기서 스토어는 /files
※실제 실무에서는 PUT보다는 POST를 쓴다 PUT은 파일등록만 할 때 쓰기도한다※
HTML FORM 사용
- HTML FORM은 GET, POST만 지원
- AJAX같은 기술을 사용해서 해결 가능 -> 회원 API참고
- 여기서는 순수 HTML, HTML FORM이야기
- GET POST만 지원함으로 제약이 있음
・ 회원 목록 /memvers - > GET
・ 회원 등록 폼 /memvers/news - > GET
・ 회원 등록 /memvers/news , /members - > POST
・ 회원 조회 /memvers/{id} - > GET
・ 회원 수정 폼 /memvers{id}/edit - > GET
・ 회원 수정 /memvers{id}/edit , /members/{id} - > POST
・ 회원 삭제 /memvers/{id}/delete - > POST
HTML FORM의 제약
- HTML FORM은 GET, POST만 지원하기 때문에 PUT PATH등은 지원하지 않는다
그래서 동사로(/news , /edit , /delete) 된 컨트롤 URI를 사용해 만든다
참고하면 좋은 URI설계 정리
- 문서(document)
- 단일 개념(파일 하나, 객체 인스턴스, 데이터베이스 row)
- 예) /members/100, /files/star.jpg - 컬렉션(collection)
- 서버가 관리하는 리소스 디렉터리
- 서버가 리소스의 URI를 생성하고 관리
- 예) /members - 스토어(store)
- 클라이언트가 관리하는 자원 저장소
- 클라이언트가 리소스의 URI를 알고 관리
- 예) /files - 컨트롤러(controller), 컨트롤 URI
- 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
- 동사를 직접 사용
- 예) /members/{id}/delete