smejak
(Jakub Smékal)
2월 17, 2023, 8:56오전
1
Discourse API를 사용하여 특정 태그가 지정된 모든 게시글(첫 번째 게시글만) 목록을 생성하려고 합니다. 지금까지는 최신 게시글만 가져올 수 있었고, 이는 댓글을 포함하여 약 40개의 게시글을 반환합니다. 특정 게시글 ID를 가져오려고 시도했을 때 일부는 성공했지만, 일부는 다음과 같은 응답을 받았습니다:
{'errors': ['You are not permitted to view the requested resource.'],'error_type': 'invalid_access'}
사용 중인 API 키는 우리 Discourse의 모든 게시글에 대해 관리자 권한이 있음에도 불구하고요. 이 문제를 경험해 보신 분이 계신가요?
RGJ
(Richard - Communiteq)
2월 17, 2023, 9:45오전
2
코드 스니펫을 올려주시겠어요? (API 키는 제외하고)
작동하는 것과 작동하지 않는 것 사이에 어떤 패턴이 보이나요?
smejak
(Jakub Smékal)
2월 17, 2023, 11:17오전
3
안녕하세요 @RGJ , posts.json으로 처음 가져온 목록에 포함된 개별 게시글은 가져올 수 있다는 걸 알게 되었습니다. 아래 코드 스니펫을 사용했습니다.
url = "https://forum.algovera.ai/posts.json"
username = "algovera"
params = {'Api-Key': api_key, "Api-Username": username}
r = requests.get(url = url, params = params)
data = r.json()
그 후 이 호출을 https://forum.algovera.ai/posts/{id}.json"으로 변경해 보았는데, 여기서 ID는 제가 보고 있던 특정 게시글의 URL에서 가져왔습니다.
RGJ
(Richard - Communiteq)
2월 17, 2023, 11:28오전
4
URL에 있는 숫자는 ID가 아니라 게시물 번호(post number)이며, 이는 주제 ID에 상대적인 값입니다.
게시물 ID를 얻으려면 주제 JSON에서 post_stream.posts[].id를 가져올 수 있습니다.
따라서 이 주제에 있는 게시물들은 다음과 같습니다.
topic ID
post_number
ID
255455
1
1241013
255455
2
1241026
255455
3
1241056
그리고 이 주제에서 가장 최근 작성한 게시물은 https://meta.discourse.org/posts/1241056.json 입니다.
smejak
(Jakub Smékal)
2월 17, 2023, 11:38오전
5
아, 그렇군요. 감사합니다. 그게 작동했네요. 그러면 각 토론의 최신 주제와 해당 토론의 첫 번째 게시글의 원문을 가져오려면 어떤 것을 호출해야 할까요? 문서에서 ‘List Topics’ 호출을 봤는데, slug가 무엇이어야 하는지 확실하지 않습니다.