springmvc 를 REST 서버 로 설정 하 는 과정

5219 단어
현재 유행 하 는 개발 방식 은 논 리 를 가능 한 한 전단 에 많이 쓰 고 백 엔 드 는 데이터 상호작용 만 담당 합 니 다. 현재 엔 드 에 데이터 가 필요 할 때 REST 스타일 의 URL 을 사용 하여 백 엔 드 에 요청 한 다음 백 엔 드 는 json 문자열 을 전단 에 되 돌려 줍 니 다.자바 백 엔 드 는 현재 REST 프레임 워 크 가 많은 것 같 습 니 다. 그러나 대부분의 자바 프로그래머 들 이 익숙 한 프레임 워 크 는 springmvc 입 니 다. springmvc 도 현재 REST 를 지원 하고 있 으 니 해 보지 않 겠 습 니까?그래서 오후 내 내 고생 끝 냈 습 니 다. 나중에 참고 할 수 있 도록 기록 해 두 겠 습 니 다.springmvc 에서 사용 하 는 버 전 은 4.3.6. RELEASE 입 니 다.필 자 는 독자 가 이미 springmvc 의 기본 적 인 사용 지식 을 가지 고 있다 고 가정 할 것 이다.
RESTful 스타일 의 URL 소개
여기 서 제 가장 간단 한 이해 만 말씀 드 리 겠 습 니 다.
전통 적 인 웹 애플 리 케 이 션 을 개발 할 때 http 프로 토 콜 이 제공 하 는 모든 방법 을 완전 하 게 사용 하지 않 고 GET 와 POST 방법 만 사 용 했 으 며 GET 방법 으로 파 라 메 터 를 전달 할 때 http://dqy.today/articles.action?articleId=3 와 같은 지루 한 URL 을 사 용 했 습 니 다. 파 라 메 터 는 '? + 키 쌍' 방식 으로 전 달 됩 니 다.RESTful 스타일 의 URL 은 매개 변 수 를 url 경로 자 체 를 통 해 전달 해 야 한다 고 주장 한다. 예 를 들 어 위 에 제 시 된 URL 을 RESTful 스타일 로 쓰 면 http://dqy.today/articles/3 이 고 매개 변 수 를 url 의 경로 에 직접 쓰 면 이런 URL 은 더욱 간단 하고 의미 도 더욱 명확 하 다.RESTful 도 HTTP 의 GET, POST, PUT, DELETE 방법 을 모두 사용 하여 같은 URL 로 더 많은 의 미 를 표현 할 수 있 도록 한다 고 주장 했다. http://dqy.today/articles 이 URL 을 예 로 들 면 이 몇 가지 조작의 의 미 는 다음 과 같다.
  • GET: 모든 문장 획득 (article)
  • POST: 추가 글
  • PUT: 문장 수정
  • DELETE: 글 한 편 삭제
  • REST 스타일 은 URL 을 간결 하 게 만 드 는 동시에 URL 의 표 현 력 도 강화 하고 HTTP 프로 토 콜 을 충분히 활용 했다.
    springmvc 로 모든 요청 차단
    springmvc 핵심 Servlet 의 차단 경 로 를 다음 과 같이 변경 합 니 다.
    
        springmvc
        /
    
    

    여기 서 / 만 쓸 수 있 고 / 로 쓸 수 없습니다. 그렇지 않 으 면 이상 한 실 수 를 할 수 있 습 니 다. 구체 적 인 원인 은 저도 잘 모 르 겠 습 니 다.
    다음은 springmvc 설정 파일 에서 프레임 워 크 가 정적 자원 의 경 로 를 차단 하지 않도록 설정 해 야 합 니 다. 다음 탭 을 사용 하 십시오.
    
    
    
    
    

    mapping 은 매 핑 할 url 을 표시 합 니 다. 마스크 를 사용 할 수 있 습 니 다. /* 는 한 층 의 하위 경로 만 일치 할 수 있다 고 표시 합 니 다. * 는 모든 하위 경 로 를 일치 시 킬 수 있다 고 표시 합 니 다. 예 를 들 어 ** 는 url 경로 /static/* 와 일치 할 수 있 지만 일치 하지 않 습 니 다 /static/a. /static/a/b 는 일치 할 수 있 습 니 다 /static/**.location 은 프로젝트 디 렉 터 리 의 실제 위치 에 있 습 니 다. 프레임 워 크 는 mapping 이 일치 하 는 하위 경 로 를 location 뒤에 연결 합 니 다. 예 를 들 어 /static/a/b 와 같은 url 경 로 는 springmvc 의 핵심 Servlet 에 의 해 차단 되 지 않 고 프로젝트 디 렉 터 리 /static/js/b.js 경로 에서 정적 자원 을 찾 습 니 다.
    springmvc 를 사용 하여 URL 디 렉 터 리 에 포 함 된 인 자 를 얻 습 니 다.
    이전에 전통 적 인 웹 응용 springmvc 는 모두 "?" 뒤의 매개 변 수 를 자동 으로 가 져 와 방법 매개 변수 에 연결 되 었 습 니 다. 현재 의 매개 변 수 는 URL 경로 에 있 습 니 다. 어떻게 가 져 와 야 합 니까?사실 springmvc 도 몇 가지 편리 한 주 해 를 제공 하여 우리 에 게 가 져 다 주 었 습 니 다. 예 를 들 어 다음 과 같 습 니 다.
    글 요청 처리 방법 수정:
    @RequestMapping(value = "articles/{articleId}", method = RequestMethod.PUT)
    public void modifyArticle(@PathVariable("articleId") String id,Article article){
        ......
    }
    

    글 삭제 요청 처리 방법:
    @RequestMapping(value = "articles/{articleId}", method = RequestMethod.DELETE)
    public void delArticle(@PathVariable("articleId") String id,Article article){
        ......
    }
    

    이 두 가지 방법 은 클 라 이언 트 가 시작 한 /static/js/b.js 요청 ({articleId} 은 하나의 마스크 와 유사 합 니 다) 을 얻 을 수 있 습 니 다. 그리고 프레임 워 크 는 @ RequestMapping 의 method 매개 변수 에 따라 최종 적 으로 어떤 방법 으로 처리 할 지 결정 합 니 다. http 의 PUT 방법 이 라면 modifyArticle 방법 으로 처리 하고 DELETE 방법 이 라면 delArticle 방법 으로 처리 합 니 다.
    @ PathVariable 주 해 를 통 해 경로 의 매개 변 수 를 방법 매개 변수 에 연결 합 니 다. {articleId} 에 일치 하 는 경로 의 값 을 방법 매개 변수 id 에 연결 합 니 다.
    springmvc 로 json 문자열 받 기
    REST 서버 는 json 으로 송 수신 하 는 것 이 유행 하고 springmvc 도 관련 편 의 를 제공 합 니 다. 그러나 추가 적 인 jackson 의존 도 를 추가 해 야 합 니 다. 추 가 된 jackson 버 전 은 springmvc 와 일치 해 야 합 니 다. 그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다. 필자 의 검증 을 거 쳐 4.3.6 버 전의 springmvc 에서 다음 과 같은 버 전의 jackson 의존 도 를 도입 해 야 합 니 다.
    
      com.fasterxml.jackson.core
      jackson-databind
      2.8.9
    
    
    
      com.fasterxml.jackson.core
      jackson-core
      2.8.9
    
    
    
      com.fasterxml.jackson.core
      jackson-annotations
      2.8.9
    
    

    그리고 다음 주 해 를 통 해 springmvc 에서 json 문자열 을 수신 하고 자동 으로 대상 으로 변환 할 수 있 습 니 다.
    @RequestMapping(value = "/...")
    public @ResponseBody Object1 (@RequestBody Object2 object2){
    ...
    ...
    return object2;
    }
    

    Object 1 과 Object 2 는 두 개의 사용자 정의 대상 입 니 다. @ RequestBody 주해 수식 방법 매개 변수 object 2 를 사용 합 니 다. 이 방법 이 요청 을 받 아들 일 때 springmvc 는 json 문자열 을 자동 으로 대상 으로 object 2 매개 변수 에 전송 합 니 다 (대상 중 Object 2 의 구성원 속성 명 에 따라 일치). 필자 의 검증 을 통 해 @ RequestBody 는 한 가지 방법 매개 변수 만 수식 할 수 있 습 니 다.여러 방법의 매개 변 수 를 동시에 수정 하면 실행 중 오류 가 발생 합 니 다. @Response Body 주 해 는 방법 이 되 돌아 오 는 대상 을 json 문자열 로 클 라 이언 트 에 전달 할 수 있 습 니 다.
    End
    이 지식 을 습득 하면 springmvc 를 REST 서버 로 개조 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기