1. 개요
이 기사에서는 Spring REST Shell과 일부 기능을 살펴 보겠습니다.
Spring Shell 확장이므로 먼저 읽어 보는 것이 좋습니다 .
2. 소개
Spring REST Shell은 Spring HATEOAS 호환 REST 리소스 작업을 용이하게하도록 설계된 명령 줄 셸입니다.
더 이상 curl 과 같은 도구를 사용하여 bash에서 URL을 조작 할 필요가 없습니다 . Spring REST Shell은 REST 리소스와 상호 작용하는보다 편리한 방법을 제공합니다.
3. 설치
Homebrew와 함께 macOS 컴퓨터를 사용하는 경우 다음 명령을 간단히 실행할 수 있습니다.
brew install rest-shell
다른 운영 체제 사용자의 경우 공식 GitHub 프로젝트 페이지 에서 바이너리 패키지를 다운로드하고 패키지의 압축을 풀고 실행할 실행 파일을 찾아야합니다.
tar -zxvf rest-shell-1.2.0.RELEASE.tar.gz
cd rest-shell-1.2.0.RELEASE
bin/rest-shell
또 다른 옵션은 소스 코드를 다운로드하고 Gradle 작업을 수행하는 것입니다.
git clone git://github.com/spring-projects/rest-shell.git
cd rest-shell
./gradlew installApp
cd build/install/rest-shell-1.2.0.RELEASE
bin/rest-shell
모든 것이 올바르게 설정되면 다음 인사말이 표시됩니다.
___ ___ __ _____ __ _ _ _ _ __
| _ \ __/' _/_ _/' _/| || | / / | \ \
| v / _|`._`. | | `._`.| >< | / / / > >
|_|_\___|___/ |_| |___/|_||_| |_/_/ /_/
1.2.1.RELEASE
Welcome to the REST shell. For assistance hit TAB or type "help".
http://localhost:8080:>
4. 시작하기
다른 기사를 위해 이미 개발 된 API로 작업 할 것 입니다. 로컬 호스트 : 8080은 기본 URL로 사용됩니다.
다음은 노출 된 엔드 포인트 List입니다.
- GET / 기사 - 모든 얻을 기사 들
- GET은 / 기사 / {ID는} - 얻을 조 ID로를
- GET / articles / search / findByTitle? title = {title} – 제목별로 기사 가져 오기
- GET / profile / articles – 기사 리소스에 대한 프로필 데이터 가져 오기
- POST / 기사 - 새로운 만들 기사 제공 몸을
기사 : 클래스는 세 개의 필드가 ID, 제목 및 내용.
4.1. 새 리소스 생성
새 기사를 추가합시다. 우리가 사용하는거야 포스트 JSON 통과 명령 문자열을 로 - 데이터 매개 변수를 .
먼저 추가하려는 리소스와 관련된 URL 을 따라야 합니다. 명령 팔로우 함께 연결 한 상대 URI를 얻어 기저 URI 현재 위치와 같은 결과를 설정
http://localhost:8080:> follow articles
http://localhost:8080/articles:> post --data "{title: "First Article"}"
명령 실행 결과는 다음과 같습니다.
< 201 CREATED
< Location: http://localhost:8080/articles/1
< Content-Type: application/hal+json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Sun, 29 Oct 2017 23:04:43 GMT
<
{
"title" : "First Article",
"content" : null,
"_links" : {
"self" : {
"href" : "http://localhost:8080/articles/1"
},
"article" : {
"href" : "http://localhost:8080/articles/1"
}
}
}
4.2. 자원 발견
이제 리소스가 확보되면 찾아 보겠습니다. 우리가 사용하는거야 (가) 발견 현재 URI의 모든 자원을 밝혀 명령을 :
http://localhost:8080/articles:> discover
rel href
=================================================
self http://localhost:8080/articles/
profile http://localhost:8080/profile/articles
article http://localhost:8080/articles/1
리소스 URI를 알고 있으므로 get 명령 을 사용하여 가져올 수 있습니다 .
http://localhost:8080/articles:> get 1
> GET http://localhost:8080/articles/1
< 200 OK
< Content-Type: application/hal+json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Sun, 29 Oct 2017 23:25:36 GMT
<
{
"title" : "First Article",
"content" : null,
"_links" : {
"self" : {
"href" : "http://localhost:8080/articles/1"
},
"article" : {
"href" : "http://localhost:8080/articles/1"
}
}
}
4.3. 쿼리 매개 변수 추가
–params 매개 변수를 사용하여 쿼리 매개 변수를 JSON 조각으로 지정할 수 있습니다 .
주어진 제목으로 기사를 봅시다 :
http://localhost:8080/articles:> get search/findByTitle \
> --params "{title: "First Article"}"
> GET http://localhost:8080/articles/search/findByTitle?title=First+Article
< 200 OK
< Content-Type: application/hal+json;charset=UTF-8
< Transfer-Encoding: chunked
< Date: Sun, 29 Oct 2017 23:39:39 GMT
<
{
"title" : "First Article",
"content" : null,
"_links" : {
"self" : {
"href" : "http://localhost:8080/articles/1"
},
"article" : {
"href" : "http://localhost:8080/articles/1"
}
}
}
4.4. 헤더 설정
headers 라는 명령을 사용하면 세션 범위 내에서 헤더를 관리 할 수 있습니다. 모든 요청은 이러한 헤더를 사용하여 전송됩니다. 헤더 세트는 소요 -name 과 - 값 헤더를 결정하기 위해 인수를.
몇 가지 헤더를 추가하고 해당 헤더를 포함하여 요청합니다.
http://localhost:8080/articles:>
headers set --name Accept --value application/json
{
"Accept" : "application/json"
}
http://localhost:8080/articles:>
headers set --name Content-Type --value application/json
{
"Accept" : "application/json",
"Content-Type" : "application/json"
}
http://localhost:8080/articles:> get 1
> GET http://localhost:8080/articles/1
> Accept: application/json
> Content-Type: application/json
4.5. 파일에 결과 쓰기
HTTP 요청 결과를 화면에 출력하는 것이 항상 바람직하지는 않습니다. 때로는 추가 분석을 위해 결과를 파일에 저장해야합니다.
- 출력 파라미터는 이러한 동작을 수행 허용 :
http://localhost:8080/articles:> get search/findByTitle \
> --params "{title: "First Article"}" \
> --output first_article.txt
>> first_article.txt
4.6. 파일에서 JSON 읽기
종종 JSON 데이터는 –data 매개 변수를 사용하여 콘솔을 통해 입력하기에는 너무 크거나 너무 복잡합니다 .
또한 명령 줄에 직접 입력 할 수있는 JSON 데이터 형식에는 몇 가지 제한 사항이 있습니다.
-from의 매개 변수는 파일 또는 디렉토리에서 데이터를 읽을 수있는 가능성을 제공합니다.
값이 디렉토리 인 경우 쉘은 ".json"으로 끝나는 각 파일을 읽고 해당 파일 의 내용으로 POST 또는 PUT를 수행합니다.
매개 변수가 파일이면 쉘은 해당 파일에서 파일과 POST / PUT 데이터를로드합니다.
second_article.txt 파일에서 다음 기사를 만들어 보겠습니다 .
http://localhost:8080/articles:> post --from second_article.txt
1 files uploaded to the server using POST
4.7. 컨텍스트 변수 설정
현재 세션 컨텍스트 내에서 변수를 정의 할 수도 있습니다. var 명령 은 각각 변수를 가져오고 설정하기위한 get 및 set 매개 변수를 정의합니다 .
헤더 와 유사하게 –name 및 –value 인수 는 새 변수의 이름과 값을 제공하기위한 것입니다.
http://localhost:8080:> var set --name articlesURI --value articles
http://localhost:8080/articles:> var get --name articlesURI
articles
이제 컨텍스트 내에서 현재 사용 가능한 변수 List을 인쇄합니다.
http://localhost:8080:> var list
{
"articlesURI" : "articles"
}
변수가 저장되었는지 확인한 후 다음 명령 과 함께 사용 하여 주어진 URI로 전환합니다.
http://localhost:8080:> follow #{articlesURI}
http://localhost:8080/articles:>
4.8. 역사보기
우리가 방문하는 모든 경로가 기록됩니다. 명령 기록 은 다음 경로를 시간순으로 표시합니다 .
http://localhost:8080:> history list
1: http://localhost:8080/articles
2: http://localhost:8080
각 URI는 해당 URI로 이동하는 데 사용할 수있는 번호와 연결됩니다.
http://localhost:8080:> history go 1
http://localhost:8080/articles:>
5. 결론
이 튜토리얼에서 우리는 Spring 생태계에서 흥미롭고 드문 도구 인 명령 줄 도구에 초점을 맞추 었습니다.
GitHub 에서 프로젝트 에 대한 자세한 정보를 찾을 수 있습니다 .
그리고 항상 그렇듯이 기사에 언급 된 모든 코드 스 니펫은 저장소 에서 찾을 수 있습니다 .