# Caver-js로 kip17로 배포된 nft 메타데이터를 가져올 수 있을까요?

**URL:** <https://devforum.kaia.io/t/caver-js-kip17-nft/4661>\
**Category:** Caver\
**Tags:** caver-js\
**Created:** [4월 2, 2022, 10:50오전 UTC](https://devforum.kaia.io/t/caver-js-kip17-nft/4661 "2022-04-02T10:50:01Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dayong7387](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/dayong7387/32/2247_2.png) [@dayong7387](https://devforum.kaia.io/u/dayong7387)\
**Post date:** [4월 2, 2022, 10:50오전 UTC](https://devforum.kaia.io/t/caver-js-kip17-nft/4661/1 "2022-04-02T10:50:01Z")

</div>

kas api없이 프론트엔드에서 klaytn지갑을 사용해서 nft메타데이터를 가져올 수 있는 방법이 있을까요?

---

<div class="post-metadata">

**Author:** ![lorance.call](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/lorance.call/32/1653_2.png) [@lorance.call](https://devforum.kaia.io/u/lorance.call)\
**Post date:** [4월 2, 2022, 11:10오전 UTC](https://devforum.kaia.io/t/caver-js-kip17-nft/4661/2 "2022-04-02T11:10:19Z")

</div>

caver-js 를 이용해 KIP17의 tokenURI 값을 받아오셔서 그 URI 주소를 json 데이터로 parsing 하시면됩니다.  
자세한 사항은 아래문서를 참고해주세요.

> **[caver.kct.kip17](https://docs.klaytn.com/dapp/sdk/caver-js/api-references/caver.kct/kip17#kip17-tokenuri)**

---

<div class="post-metadata">

**Author:** ![dayong7387](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/dayong7387/32/2247_2.png) [@dayong7387](https://devforum.kaia.io/u/dayong7387)\
**Post date:** [4월 2, 2022, 11:37오전 UTC](https://devforum.kaia.io/t/caver-js-kip17-nft/4661/3 "2022-04-02T11:37:03Z")

</div>

연결된 지갑 owner의 tokenId 리스트를 얻을 수 있는 좋은 방법이 있을까요? balanceOf와 tokenOfOwnerByIndex 를 합쳐서 순회하는 방법말고는 보이는 것이 없네요.

---

<div class="post-metadata">

**Author:** ![lorance.call](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/lorance.call/32/1653_2.png) [@lorance.call](https://devforum.kaia.io/u/lorance.call)\
**Post date:** [4월 2, 2022, 12:03오후 UTC](https://devforum.kaia.io/t/caver-js-kip17-nft/4661/4 "2022-04-02T12:03:26Z")

</div>

해당 과정을 대신 내부적으로 수행해주는 view 전용 컨트랙트를 배포해 사용하시는 방법도 있습니다.

예를들어 아래처럼 구현하시면 js 단에서는 loop없이 정보 얻으실수있습니다.

function allTokenIds(address nftAddress, address walletAddress) external view returns (uint256[] tokenIds) {  
IKIP17 kip17 = IKIP17(nftAddress);  
uint256 i;  
for (i ; i \< kip17.balanceOf(walletAddress) ; i++) {  
tokenIds[i] = kip17.tokenOfOwnerByIndex(walletAddress, i);  
}  
}

답변되셨길바랍니다
