스팀 앱 개발기 #102 - 포스트 내용을 읽기 위한 bridge.get_discussion APIsteemCreated with Sketch.

포스트 내용을 읽기 위한 bridge.get_discussion API

No. 101
23.06.09 (금) | Written by @dorian-mobileapp

시작하며...

포스트 내용을 보여줄 화면에서 필요한 API는 bridge.get_discussion입니다. 말 그대로 포스트 내용을 불러 오는 거지요. 오늘은 이 API를 분석합니다.


API 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
Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Coin Marketplace

STEEM 0.20
TRX 0.12
JST 0.029
BTC 61153.73
ETH 3403.85
USDT 1.00
SBD 2.51