반응형
Infura 서비스 중 IPFS 를 활용하면 NFT 의 metadata 를 IPFS 서버에 업로드 하는데 사용할 수 있다.
그리고 nodejs 서버를 통해 업로드한 json 데이터를 받아오기 위해 다음 코드처럼 사용하면 된다.
const cid = 'QmTUy2xbUAjf3E79u4JztNP4JEbD8vh45kVVeM3n7rvWX8';
const options = {
host: 'ipfs.infura.io',
port: 5001,
path: '/api/v0/cat?arg='+cid,
method: 'POST',
// auth: process.env.INFURA_PROJECT_ID + ':' + process.env.INFURA_PROJECT_SECRET,
};
let req = https.request(options, (res) => {
let body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
console.log(body);
});
});
req.end();
- 여기서 주의할 점은 path 에서
/api/v0/cat
을 사용한다는 것./api/v0/get
주소를 사용하면 응답값에 불필요한 데이터가 함께 리턴된다. - get 에서는 auth 정보가 요구되지 않는다.
QmTUy2xbUAjf3E79u4JztNP4JEbD8vh45kVVeM3n7rvWX800006440000000000000000000000024142476126500166720ustar0000000000000000{
"name": "gus"
}
- 내가 원했던 정상적인 데이터는 다음과 같다.
{
"name": "gus"
}
번외: https await 만들기
let metadata;
console.log("pjt id", process.env.INFURA_PROJECT_ID);
const cid = 'QmTUy2xbUAjf3E79u4JztNP4JEbD8vh45kVVeM3n7rvWX8';
const options = {
host: 'ipfs.infura.io',
port: 5001,
path: '/api/v0/cat?arg='+cid,
method: 'POST',
// auth: process.env.INFURA_PROJECT_ID + ':' + process.env.INFURA_PROJECT_SECRET,
};
metadata = await new Promise((resolve, reject) => {
let req = https.request(options, (res) => {
let body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
resolve(JSON.parse(body));
});
});
req.on('error', (err) => {
reject(err);
})
req.end();
});
번외: https 대신 fetch 사용하기
let metadata;
const cid = 'QmVX1xe3kDzMoDQBREGFVpcpcSZV52HEEzpysKFVxVkU3X';
await fetch('https://ipfs.infura.io:5001/api/v0/cat?arg='+cid, { method: 'POST'})
.then((response) => response.json())
.then((data) => metadata = data);
https
를 사용할 때보다 코드가 간단해졌다.https
를 사용하는 이유는 별다른 패키지를 import 하지 않고 기본 기능만 사용할 때 쓰인다.
반응형
'프로그램언어 > Javascript' 카테고리의 다른 글
(react) JSON array 를 setState array 로 관리하여 display 하기 (0) | 2022.06.13 |
---|---|
[react + nestjs] fetch cors 에러 (0) | 2022.06.13 |
nestjs dotenv 설정 (0) | 2022.05.19 |
npm dependency 고정하기 (0) | 2022.05.18 |
node_modules 로컬 파일 바라보기 (0) | 2022.05.16 |