# Discourse API 문서에서 GET 요청에 대해 “request body”를 언급함

**URL:** https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137
**Category:** Development
**Tags:** rest-api
**Created:** [6월 26, 2022, 6:36오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137 "2022-06-26T18:36:30Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 6:36오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/1 "2022-06-26T18:36:31Z")

</div>

특정 토픽에서 특정 게시물을 가져오기 위한 스크립트를 작성하려고 합니다. 이 페이지를 참고하고 있습니다: [Discourse API Docs](https://docs.discourse.org/#tag/Topics/operation/getSpecificPostsFromTopic)

하지만 계속 응답 상태 코드 413가 반환됩니다.

부탁입니다, 도와주세요! 해결해 주신다면 PayPal 계정에 20달러를 보내겠습니다.

```plaintext
def get_post_from_topic(topic_id, post_id):
    endpoint = "https://www.example.com/t/" + topic_id + "/posts.json"

    headers = {
        "Content-Type": "application/json",
        "Api-Key": api_key,
        "Api-Username": api_username,
    }

    data = {"post_ids[]": post_id} # 0을 시도해 봤지만 작동하지 않았습니다

    response = requests.get(endpoint, headers=headers, data=data)
    if response.status_code == 200:
        return response

```

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 6:40오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/2 "2022-06-26T18:40:56Z")

</div>

참고로 제 API 키와 API 사용자 이름은 정확합니다. 이 API를 제외한 다른 Discourse API들은 모두 정상적으로 작동합니다.

---

<div class="post-metadata">

### Author: ![Ahmed\_Gagan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ahmed_gagan/32/161985_2.png) [@Ahmed\_Gagan](https://meta.discourse.org/u/Ahmed_Gagan)
#### Post date: [6월 26, 2022, 7:04오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/3 "2022-06-26T19:04:52Z")

</div>

안녕하세요, [Discourse API gen](https://github.com/discourse/discourse_api)을 확인해 보실 수 있습니다.

이 지엄에서 필요하신 API를 쉽게 찾으실 수 있으므로 별도로 구현할 필요가 없습니다.

여전히 유료 지원이 필요하시다면 알려 주세요. 관심 있는 분들이 연락할 수 있도록 #Marketplace 채널로 주제를 이동하겠습니다.

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 7:13오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/4 "2022-06-26T19:13:25Z")

</div>

안녕하세요 @Ahmed_Gagan

답변 주셔서 감사합니다.

아직 유료 지원이 필요한 것 같습니다.

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 7:13오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/5 "2022-06-26T19:13:52Z")

</div>

게시물을 마켓플레이스로 이동했습니다

---

<div class="post-metadata">

### Author: ![Hector](https://avatars.discourse-cdn.com/v4/letter/h/43a26b/32.png) [@Hector](https://meta.discourse.org/u/Hector)
#### Post date: [6월 26, 2022, 7:20오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/6 "2022-06-26T19:20:50Z")

</div>

본문을 전송하고 있으므로 POST 요청을 사용해야 합니다.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [6월 26, 2022, 7:39오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/7 "2022-06-26T19:39:08Z")

</div>

토픽만 가져오고 싶지 않은 게시글은 무시하면 됩니다.

게시글 ID가 있다면 `/p/123`을 사용할 수도 있습니다.

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 7:42오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/8 "2022-06-26T19:42:52Z")

</div>

단일 게시물 가져오기 API를 사용해 보았지만, "link\_counts"를 반환하지 않고 "post\_stream"도 없습니다.

특정 주제의 게시물 가져오기 API에는 "post\_stream"이 있는 것 같습니다.

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 7:44오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/9 "2022-06-26T19:44:29Z")

</div>

그리고 내가 처리하려는 토픽에는 1500개 이상의 게시물이 있습니다…

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [6월 26, 2022, 7:54오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/10 "2022-06-26T19:54:01Z")

</div>

데이터를 명시적으로 JSON으로 인코딩해야 할 수도 있습니다.

```plaintext
data = '{"post_ids[]":' + post_id +'}' 

```

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 8:00오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/11 "2022-06-26T20:00:41Z")

</div>

동작하지 않습니다.

방금 json.dumps도 시도해 봤는데, 이것도 작동하지 않습니다…

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 8:05오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/12 "2022-06-26T20:05:34Z")

</div>

코드 예제가 있으면 좋겠는데…

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [6월 26, 2022, 10:19오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/13 "2022-06-26T22:19:35Z")

</div>

GET 요청에는 항상 쿼리 문자열이 포함되어 있으며, POST 데이터는 절대 포함되지 않습니다(이것이 413 payload too large 오류가 발생하는 이유이며, 서버는 POST 데이터를 기대하지 않습니다). 서버에서 데이터를 변경하지 않고 조회할 때는 거의 항상 POST가 아닌 GET을 사용합니다. 따라서 `data=` 대신 `params=`를 사용해야 합니다.

해당 API 호출에 대한 문서가 다소 불명확하게 작성되어 있다고 생각합니다("[Request Body schema](https://docs.discourse.org/#tag/Topics/operation/getSpecificPostsFromTopic)"는 실제로 POST `data`를 암시합니다) 그래서 이 이슈를 #contribute:bug로 옮기겠습니다. 그리고 아무것도 지불하실 필요가 없습니다.

```python
import requests
import json

def get_post_from_topic(topic_id, post_id):
    endpoint = f"https://forum.example.com/t/{topic_id}/posts.json"
    api_username = 'system'
    api_key = 'REDACTED'
    headers = {
        "Content-Type": "application/json",
        "Api-Key": api_key,
        "Api-Username": api_username,
    }
    params = {
      "post_ids[]": post_id
    }
    response = requests.get(endpoint, headers=headers, params = params) 
    if response.status_code == 200:
        return response

response = get_post_from_topic(6,8)
print(response.json())

```

```plaintext
{"post_stream": {"posts": [{"id": 8, "name": "system", "username": "system", "avatar_template": "/images/discourse-logo-sketch-small.png", "created_at": "2022-06-26T04:44:23.637Z", "cooked": "<p><a name=\"collect\"></a></p>\n<h2>\n<a name=\"what-information-do-we-collectcollect-1\" class=\"anchor\" href=\"#what-information-do-we-collectcollect-1\"></a><a href=\"#collect\">What information do we collect...

```

---

<div class="post-metadata">

### Author: ![VincentAlse](https://avatars.discourse-cdn.com/v4/letter/v/7ba0ec/32.png) [@VincentAlse](https://meta.discourse.org/u/VincentAlse)
#### Post date: [6월 26, 2022, 11:09오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/14 "2022-06-26T23:09:55Z")

</div>

동작합니다!

@RGJ 감사합니다

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [7월 26, 2022, 11:10오후 UTC](https://meta.discourse.org/t/discourse-api-docs-mention-a-request-body-for-a-get-request/231137/17 "2022-07-26T23:10:02Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
