메인 콘텐츠로 건너뛰기
Cosmos SDK의 모든 gRPC 서비스는 gRPC-gateway를 통해 더 편리한 REST 기반 쿼리에 사용할 수 있습니다. URL 경로의 형식은 Protobuf 서비스 메서드의 전체 정규화된 이름을 기반으로 하지만, 최종 URL이 더 관용적으로 보이도록 약간의 사용자 정의가 포함될 수 있습니다. 예를 들어, cosmos.bank.v1beta1.Query/AllBalances 메서드의 REST 엔드포인트는 GET /cosmos/bank/v1beta1/balances/{address}입니다. 요청 인수는 쿼리 매개변수로 전달됩니다. 다음 예제에서는 로컬 프라이빗 네트워크의 노드와 상호작용하기 위해 REST 엔드포인트를 사용한다고 가정합니다. 도메인을 퍼블릭 네트워크로 변경할 수 있습니다. 구체적인 예로, 잔액 요청을 하는 curl 명령은 다음과 같습니다:
curl \
    -X GET \
    -H "Content-Type: application/json" \
    http://localhost:1317/cosmos/bank/v1beta1/balances/$MY_VALIDATOR
localhost:1317api.address 필드에서 구성된 노드의 REST 엔드포인트로 대체하세요. 사용 가능한 모든 REST 엔드포인트 목록은 Swagger 사양 파일로 제공됩니다; localhost:1317/swagger에서 확인할 수 있습니다. app.toml 파일에서 api.swagger 필드가 true로 설정되어 있는지 확인하세요.

REST를 사용한 과거 상태 쿼리

과거 상태를 쿼리하려면 HTTP 헤더 x-cosmos-block-height를 사용합니다. 예를 들어 curl 명령은 다음과 같습니다:
curl \
    -X GET \
    -H "Content-Type: application/json" \
    -H "x-cosmos-block-height: 279256" \
    http://localhost:1317/cosmos/bank/v1beta1/balances/$MY_VALIDATOR
해당 블록의 상태가 아직 노드에서 정리되지 않았다면, 이 쿼리는 비어 있지 않은 응답을 반환해야 합니다.

Cross-Origin Resource Sharing (CORS)

보안을 위해 CORS 정책은 기본적으로 활성화되어 있지 않습니다. rest-server를 사용하려면 리버스 프록시를 제공하는 것이 좋습니다. 이는 nginx로 수행할 수 있습니다. 테스트 및 개발 목적으로 app.toml 내에 enabled-unsafe-cors 필드가 있습니다.

트랜잭션 전송

gRPC 및 REST를 사용하여 트랜잭션을 전송하려면 몇 가지 추가 단계가 필요합니다: 트랜잭션 생성, 서명, 그리고 마지막으로 브로드캐스트. 자세한 내용은 트랜잭션에서 확인할 수 있습니다.