카우치베이스 서버

Couchbase REST API를 사용한 Powershell

PowerShell은 Windows와 함께 제공되는 스크립팅 환경/명령줄로, 다음과 같은 기능도 제공합니다. Linux에서 사용 가능 그리고 Azure 내에서.

사용하신 적이 있으신가요? 우편 배달원 또는 피들러 를 사용하여 HTTP 요청을 할 수 있습니다. 이러한 도구는 훌륭하지만 자동화나 스크립팅에 반드시 적합한 도구는 아닙니다.

들어보셨을 겁니다. curl 를 사용해 보세요. HTTP 요청을 위한 명령줄 도구입니다.

저와 같은 .NET/Windows 개발자라면 curl에 익숙하지 않을 수도 있습니다. 저는 매일 PowerShell을 기본 명령줄로 사용합니다(아직 PowerShell 초보자라고 생각하지만요). 이 글에서는 PowerShell의 Invoke-WebRequest 를 사용하여 HTTP 요청을 할 수 있습니다(자동화를 위해 PowerShell 스크립트 내에서 사용할 수 있음).

PowerShell 깃허브에서 만든 스크립트. 참고: 이 글을 쓰는 시점을 기준으로 저는 Windows 10에서 PowerShell 5.1을 사용하고 있습니다.

Couchbase REST API

카우치베이스 서버는 광범위한 REST API 의 거의 모든 측면을 관리하고 관리하는 데 사용할 수 있습니다. 이 블로그 게시물에서는 전체 텍스트 검색(FTS) API에 초점을 맞추겠습니다. 제가 이것을 보여드리려고 하는 이유는 다음과 같습니다:

  • FTS 인덱스 생성은 결국 자동화하고 싶을 것입니다.
  • 생성한 FTS 인덱스를 팀과 공유하거나 소스 제어에서 확인하고 싶을 것입니다.
  • 카우치베이스 콘솔은 이미 컬을 사용하는 방법을 정확하게 보여줍니다.

FTS에 대해서는 자세히 다루지 않겠습니다: 다음을 확인하시기 바랍니다. FTS에 대한 지난 블로그 게시물전체 텍스트 검색을 시연하는 이 짧은 동영상.

전체 텍스트 검색 검토

처음에 FTS 인덱스를 만들 때는 아마도 Couchbase 콘솔에 내장된 FTS UI를 사용하게 될 것입니다. 초기 개발을 할 때는 괜찮지만, 이 인덱스를 팀과 공유하거나 배포를 자동화하거나 소스 제어를 활용하려는 경우에는 실용적이지 않습니다.

다행히도 "인덱스 정의 JSON 표시" 기능을 사용하여 인덱스 정의를 구성하는 JSON 데이터를 볼 수 있습니다. Couchbase 콘솔이 컬 메서드를 생성하도록 할 수도 있습니다.

Generate FTS curl script

컬을 사용하는 경우 매우 편리합니다. 예를 들어 보겠습니다:

이를 스크립트에 복사/붙여넣고 소스 제어에서 스크립트를 확인할 수 있습니다. 하지만 컬을 사용하지 않는다면 어떨까요?

PowerShell 버전: Invoke-WebRequest

먼저 새 PowerShell 스크립트를 만듭니다. 저는 제 createFtsIndex.ps1. 이 PowerShell 스크립트는 기존 버킷에 FTS 인덱스를 생성하기만 하면 됩니다.

이 파일에 "curl" 명령을 붙여넣어 시작할 수 있습니다. 이 명령의 대부분은 JSON 정의이며 완전히 동일합니다.

나머지 curl 명령을 자세히 분석하여 어떤 일이 발생하는지 살펴보겠습니다:

  • -XPUT - 이것은 HTTP 요청에 PUT 동사를 사용하도록 curl에 지시하는 것입니다.
  • -H "콘텐츠 유형: 애플리케이션/json" - 콘텐츠 유형 헤더를 사용합니다.
  • https://localhost:8094/api/index/medical-condition - 이것은 REST 엔드포인트의 URL입니다. "localhost"는 Couchbase가 실행되는 위치에 따라 달라지며, "medical-condition" 부분은 FTS 인덱스의 이름일 뿐입니다.
  • -d '...json 페이로드...' - HTTP 요청에 포함될 콘텐츠 본문입니다.

PowerShell의 Invoke-WebRequest 도 이 모든 작업을 수행할 수 있지만 구문은 약간 다릅니다. 이에 해당하는 내용을 단계별로 살펴보겠습니다:

  • -메서드 PUT - 이것은 Invoke-WebRequest에 HTTP 요청에 PUT 동사를 사용하도록 지시하는 것이므로 다음을 대체할 수 있습니다. -XPUT
  • -헤더 @{ ... } - 요청에 사용할 헤더를 지정합니다(나중에 자세히 설명합니다).
  • -Uri https://localhost:8094/api/index/medical-condition" - 앞에 "-Uri"를 추가하기만 하면 됩니다.
  • -바디 '...json 페이로드...' - 콘텐츠 본문은 curl의 -d

헤더

PowerShell은 헤더가 포함된 "사전"을 기대합니다. PowerShell에서 리터럴 사전의 구문은 다음과 같습니다:

@{"key1"="value1"; "key2"="value2"}

그런 다음 콘텐츠 유형을 지정합니다:

-헤더 @{"Content-Type"="application/json"}

컬 출력의 한 가지 not 생성은 API에 요청하는 데 필요한 인증 정보입니다. curl을 사용하면 URL에 사용자 이름/비밀번호를 추가하여 기본 인증을 지정할 수 있습니다. 그런 다음 이를 적절한 기본 인증 헤더로 변환합니다.

PowerShell을 사용하면 직접 해야 하는 것 같습니다. 내 로컬 Couchbase Server에는 "관리자" 및 "비밀번호" 자격 증명이 있습니다(프로덕션에서는 사용하지 마세요). 이 자격 증명을 Base64로 인코딩하여 헤더에 추가해야 합니다.

그러면 전체 헤더 사전은 다음과 같이 표시됩니다:

-Headers @{"Authorization" = "Basic"+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("Administrator:password")); "Content-Type"="application/json"}

조금 시끄럽다고 생각할 수도 있고 저도 동의합니다. 더 깔끔한 방법을 알고 계신다면 알려주세요. 댓글을 남겨 주세요.

PowerShell 스크립트 실행

스크립트를 실행하려면 다음과 같이 입력하기만 하면 됩니다. .\createFtsIndex.ps1 을 입력합니다.

Execute PowerShell script

이제 배포의 일부로 사용할 준비가 되었습니다.

업데이트: 카우치베이스의 엔지니어인 크리스 힐러리가 업데이트에서 언급할 가치가 있다고 생각되는 몇 가지 사항을 알려주었습니다.

"컬 명령 표시"를 보여주는 애니메이션 GIF는 약간 오해의 소지가 있습니다. 이 curl 명령은 다음과 같은 작업에 사용하는 명령입니다. 기존 FTS 인덱스 교체. 인덱스를 처음 생성하는 경우 인덱스 정의 JSON도 화면 오른쪽의 창에 자동으로 생성됩니다.

JSON generated for a new index

FTS 인덱스를 배포하는 스크립트를 만드는데 인덱스가 아직 존재하지 않는 경우 후자를 사용해야 합니다. 스크립트가 다음과 같은 경우 교체 를 인덱스로 사용하려면 전자를 사용해야 합니다.

요약

PowerShell은 스크립팅 및 자동화를 위한 편리한 도구입니다. Azure에서 사용됩니다, 옥토퍼스 배포및 Windows가 실행되는 모든 곳에서 사용할 수 있습니다. PowerShell을 사용하여 전체 텍스트 검색 인덱스와 같은 Couchbase REST API 호출을 자동화하면 팀원들이 고마워할 것입니다.

도움이 필요하신가요? 궁금한 점이 있으면 아래에 댓글을 남기거나 다음에서 저를 찾아주세요. 트위터 @mgroves.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by 매튜 그로브스

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.