\ # JAVA RESTful WebService 실전 노트 (1)

PUT 방법
PUT 방법 은 쓰기 동작 을 하 는 HTTP 요청 으로 REST 는 HTTP 의 PUT 방법 으로 자원 을 업데이트 하거나 추가 합 니 다.
1. 자원 업데이트
REST 지식 스타일 은 기술 규범 이나 기준 이 아니 기 때문에 일부 REST 의 세부 적 이 고 명확 한 정 의 를 실현 한다. 이것 은 실천 에 있어 일부 오해 가 생 길 수 밖 에 없다. 예 를 들 어 특정한 자원 을 만 들 고 업데이트 할 때 개발 자 들 은 HTTP 의 PUT 방법 을 언제 사용 해 야 하 는 지, POST 방법 을 언제 사용 해 야 하 는 지, 이 문 제 를 해결 하기 위해 우 리 는 먼저 PUT 방법의 특성 을 알 아야 한다.PUT 방법 은 멱 등 입 니 다. 즉, 같은 데 이 터 를 여러 번 삽입 하거나 업데이트 하 는 것 입 니 다. 서버 에서 자원 상태 에 대한 변 화 는 같 습 니 다. PUT 방법 은 안전 하지 않 습 니 다. 일부 동작 은 HTTP 방법 이 안전 하지 않 습 니 다.우 리 는 같은 데 이 터 를 사용 하여 서버 에 자원 업 데 이 트 를 요청 하기 때문에 얻 은 결 과 는 항상 같 아야 한 다 는 것 을 알 고 있 기 때문에 업데이트 작업 에 대해 PUT 를 사용 하 는 것 은 의문 이 없다.
2. 자원 추가
생 성 작업 은 일반적으로 매번 얻 는 결과 가 다 릅 니 다. 서버 의 업무 층 논 리 는 데이터 의 메 인 키 필드 를 요구 하기 때문에 업무 플랫폼 에서 논리 값 을 추가 하거나 데이터 베이스 에서 메 인 키 가 증가 하기 때문에 같은 데 이 터 를 서버 에 제출 할 때마다 데이터 에 새로운 메 인 키 값 을 추가 합 니 다.즉, 메 인 키 값 이 다른 새로운 자원 을 만 드 는 것 입 니 다. (업무 나 외부 키 가 충돌 하지 않 으 면)따라서 생 성 작업 은 보통 POST 방법의 API 로 설계 해 야 한다. 한 장면 만 PUT 방법 으로 API 를 설계 해 야 한다. 즉, 클 라 이언 트 가 생 성 요청 을 할 때 같은 데이터 에서 유일한 메 인 키 값 을 제공 할 수 있 고 서버 는 이 를 수정 하지 않 는 다. 이런 생 성 요청 은 멱 등 성 을 확보 하고 PUT 요청 을 사용 해 서 는 안 된다.
자원 주소 디자인
자원 주소 의 디자인 은 전체 REST 식 웹 서비스 에 매우 중요 하고 디자인 시스템 의 가용성 과 확장 성 등 여러 가지 측면 에서 나타난다.
1. 자원 경로 개관
원소
묘사 하 다.
sehema
프로 토 콜 이름, 보통 HTTP 또는 HTTPS
host
(DNS) 호스트 이름 또는 IP 주소
port
서비스 포트
path
자원 주소, "/" 기 호 를 사용 하여 논리 적 차원 구 조 를 구분한다
?
자원 주소 와 검색 문자열 기 호 를 구분 하 는 데 사용 합 니 다.
queryString
검색 문자열, 방법 역할 도 메 인 정 보 는 '&' 기 호 를 사용 하여 검색 조건 을 구분 하고 사용 하면 순서 가 있 는 역할 도 메 인 정 보 를 구분 하여 순서 가 없 는 역할 도 메 인 정 보 를 사용 합 니 다.
자원 주소 의 경로 변 수 는 논리 적 인 차원 구 조 를 표현 하 는 데 사용 되 고 자원 과 서브 자원 의 기 쁜 일 은 왼쪽 에서 오른쪽으로, 슬 래 쉬 로 구 분 된 명사 입 니 다.그들의 관 계 는 전체 에서 국부 까지, 예 를 들 어 학교 에서 반, 도시 에서 시골 까지 할 수 있다. 예 를 들 어 한 생물의 '문', '강', '목', '과' 등 이다.자원 경로, 자원 주 소 는 구체 적 으로 5 개 부분 으로 나 눌 수 있 습 니 다.sehema://host:port/path?queryString예 를 들 면, 아래 표 와 같다.
원소
묘사 하 다.
sehema
프로 토 콜 이름, 보통 HTTP 또는 HTTPS
host
(DNS) 호스트 이름 또는 IP 주소
port
서비스 포트
path
자원 주소, "/" 기 호 를 사용 하여 논리 적 차원 구 조 를 구분한다
?
자원 주소 와 검색 문자열 기 호 를 구분 하 는 데 사용 합 니 다.
queryString
검색 문자열, 방법 역할 도 메 인 정 보 는 '&' 기 호 를 사용 하여 검색 조건 을 구분 하고 사용 하면 순서 가 있 는 역할 도 메 인 정 보 를 구분 하여 순서 가 없 는 역할 도 메 인 정 보 를 사용 합 니 다.
프로 토 콜 이름, 호스트 이름, 서비스 포트, 자원 주소 와 검색 문자열 5 개 부분 을 포함 하 는 전형 적 인 URIhttp://localhost:8080/simple-service-webapp-spring-jpa-jquery/webapi/books/book?id=1
  • requestURL
  • http://localhost:8080/simple-service-webapp-spring-jpa-jquery/webapi/books/book?id=1

  • ContextPath
  • simple-service-webapp-spring-jpa-jquery

  • ServletPath
  • webapi

  • PahtInfo
  • books/book


  • 일반적으로 ContextPath, ServletPaht, PathInfo 를 사용 하여 자원 주 소 를 세분 화 합 니 다.
  • ContextPath: 컨 텍스트 이름 은 서버 설정 이나 REST 서 비 스 를 배치 하 는 웹. xml 설정 과 관련 이 있 습 니 다.
  • ServletPath: Servlet 의 이름 으로 REST 서비스 에서 정 의 된 @ ApplicationPath 주석 이나 웹. xml 의 설정 과 관련 이 있 습 니 다
  • JAX - RS2 는 자원 주 소 를 정의 하기 위해 @ Path 주 해 를 정 의 했 습 니 다.
  • PathInfo: 자원 경로 정보, 자원 류, 하위 클래스 및 러 종의 방법 인 티 니 의 @ Path 주해 와 관련 이 있 음
  • 2. 자원 주소 와 역할 영역
    기능.
    자원 주소
    추가 / 생 성
    POST/booksPUT/books/{id}
    삭제
    DELETE/books/{id}
    수정 / 업데이트
    PUT/books/{id}
    모두 검색
    GET/books HTTP1.1
    홈 키 조회
    GET/books/{id} HTTP1.1GET /books?id=12334
    페이지 별 역할 영역 조회
    GET/books/{id} HTTP1.1GET /books/01,2002-12,2014GET /books/restful;program=java;type=webGET /books?limit=100&sort=bookname
    경로 변수 에서 구두점 기 호 를 사용 하여 논리 적 선명 성 을 보조 할 수 있다.아래 표 와 같다
    기능.
    자원 주소
    추가 / 생 성
    POST/booksPUT/books/{id}
    삭제
    DELETE/books/{id}
    수정 / 업데이트
    PUT/books/{id}
    모두 검색
    GET/books HTTP1.1
    홈 키 조회
    GET/books/{id} HTTP1.1GET /books?id=12334
    페이지 별 역할 영역 조회
    GET/books/{id} HTTP1.1GET /books/01,2002-12,2014GET /books/restful;program=java;type=webGET /books?limit=100&sort=bookname
  • 물음표 (?) 는 자원 경로 주소 와 검색 문자열 을 구분 하고 기호 (&) 와 검색 조건 을 구분 하 는 매개 변수 입 니 다. 예제 코드 는 다음 과 같 습 니 다
  • .
    GET /books?start=0&size=19
    

    코드 설명: 시작 줄 매개 변 수 는 0 이 고 조회 항목 은 19 이 며 0 줄 부터 19 개의 데 이 터 를 조회 합 니 다.
  • 쉼표 (,) 는 순서 가 있 는 역할 도 메 인 정 보 를 구분 하 는 데 사용 되 는데 주의해 야 할 것 은 쉼표 구분자 의 논리 적 인 순서 정보 이다. 이런 순 서 는 약 속 된 것 일 수 있다. 예 를 들 어 경 도 를 먼저 쓴 다음 에 위도 등 이다.년, 월, 일, 시 등 시스템 적 으로 약속 할 수도 있다.예 를 들 어 시간 구역 에 따라 도 서 를 조회 하고 날짜 정 보 는 자원 주소 에서 월, 년 순 서 를 사용 하 며 코드 는 다음 과 같다
  • .
    GET /books/01,2002-12,2014
    

    코드 설명: 2002 년 1 월 부터 2014 년 12 월 까지 의 이 시간 대의 도 서 를 조회 합 니 다. 이 예 에서 하이픈 (-) 도 사 용 했 고 가끔 은 밑줄 () 을 사용 하여 논리 적 인 보조 구분 을 할 수 있 습 니 다.
  • 분점 (;) 은 순서 가 없 는 역할 도 메 인 정 보 를 구분 하 는 데 사용 되 는데 보통 이런 정 보 는 논리 적 으로 병렬 적 으로 존재 한다. 예 를 들 어 병렬 적 인 조회 조건, 예제 코드 는 다음 과 같다
  • .
    GET /books/restful;program=java;type=web
    

    코드 설명: 도서 내용 을 만족 시 키 는 restful 을 조회 합 니 다. 석 홍 의 프로 그래 밍 언어 는 자바 의 설명 유형 은 웹 의 도서 목록 입 니 다.

    좋은 웹페이지 즐겨찾기