스팀 앱 개발기 #102 - 포스트 내용을 읽기 위한 bridge.get_discussion API
포스트 내용을 읽기 위한 bridge.get_discussion API
No. 101
23.06.09 (금) | Written by @dorian-mobileapp
시작하며...
포스트 내용을 보여줄 화면에서 필요한 API는 bridge.get_discussion입니다. 말 그대로 포스트 내용을 불러 오는 거지요. 오늘은 이 API를 분석합니다.
API URL
- https://api.steemit.com
- 또는 다른 RPC 노드 URL
서버에 보낼 파라메터
bridge.get_discussion API를 실행할 때, 서버에 보낼 JSON 데이터는 아래와 같습니다.
{
"id": 1,
"jsonrpc": "2.0",
"method": "bridge.get_discussion",
"params": {
"author": "...",
"permlink": "..."
}
}
필수 파라메터
- author: 포스트의 저자 계정
- permlink: 포스트의 permlink(일종의 고유 주소)
서버로부터 받을 응답 자료
응답 자료의 키는 jsonrpc, result, id 3가지입니다.
{
"jsonrpc": "2.0",
"result": 포스트와 댓글들을 담은 JSON 객체(포스트와 댓글은 포맷 동일),
"id": 0
}
result의 포맷
해당 포스트 그리고 그것의 하위 포스트들을 담은 JSON 객체입니다. 이들의 키 값은 각 포스트의 서브 URL입니다.(이 API 또한 스팀 API 문서에서는 설명이 없네요. ㅠㅠ)
result의 포맷은 다음과 같습니다.
{
"포스트의 서브 URL": 포스트 JSON 객체,
"포스트의 1번째 댓글의 서브 URL": 포스트 JSON 객체,
"포스트의 2번째 댓글의 서브 URL": 포스트 JSON 객체,
...
}
포스트 JSON 객체의 포맷은 다음과 같습니다.
{
"post_id": 포스트 번호,
"author": 저자 계정,
"permlink": 포스트 permlink(고유주소),
"category": 첫 태그,
"title": 포스트 제목,
"body": 포스트 내용,
"json_metadata": bridge.get_ranked_posts API의 그것과 동일,
"created": 작성일시(UTC),
"updated": 최근 업데이트 일시(UTC),
"depth": 0은 최상위 포스트, 1은 댓글, 2는 대댓글... ,
"children": 댓글 개수,
"net_rshares": 보상총량(raw data),
"is_paidout": 보상 지불 되었으면 true 그렇지 않으면 false,
"payout_at": 보상 지급 일시(UTC),
"payout": 보상 금액 ($ 단위),
"pending_payout_value": 미지급 보상 금액 ($ 단위),
"author_payout_value": 지급된 저자 보상 금액 ($ 단위),
"curator_payout_value": 지급된 큐레이션 보상 금액 ($ 단위),
"promoted": 홍보 금액 (없으면 "0.000 SBD"),
"replies": 댓글들의 서브 URL 리스트,
"active_votes": 보팅 배열 (보팅은 voter(보팅한 계정), rshares(문자열)로 구성),
"author_reputation": 저자 계정의 명성도,
"stats": {
"hide": true or false,
"gray": true or false,
"total_votes": 보팅한 계정 수 (유효하지 않은 보팅은 제외되는 듯),
"flag_weight": 0.0
},
"beneficiaries": 보상을 나눠 가질 수혜자 배열 (수혜자: account, weight(정수. 100%면, 10000)로 구성),
"max_accepted_payout": 가능한 보상 최대값 (예: "1000000.000 SBD"),
"percent_steem_dollars": 10000,
"url": 포스트의 서브 URL (예: "/hive-101145/@dorian-lee/1000"),
"blacklists": 블랙리스트 배열 (예: ["reputation-0"]),
"community": 포스트가 속한 커뮤니티의 태그 (예: "hive-139150"),
"community_title": 포스트가 속한 커뮤니티 이름(예: "PIRCOIN · 해적 코인"),
"author_role": 커뮤니티에서 저자의 역할 (예: "guest"),
"author_title": 커뮤니티에서 저자의 별칭 (예: "깨굴깨굴 깨구리 노래를 한다~")
}
마치며...
처음에는 condenser_api.get_content API를 사용하려 했는데, 포스트 포맷이 bridge.get_ranked_posts API와 다른 점이 다소 있어 애를 좀 먹었습니다. 혹시나 해서 스팀잇 사이트에서 사용 중인 API를 확인해 보았고, bridge.get_discussion API가 대신 사용 중인 것을 알 수 있었습니다. 다행히 포스트의 포맷이 거의 똑같네요. 한시름 덜었습니다.
지난 스팀 앱 개발기
Layout provided by Steemit Enhancer hommage by ayogom
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!