# API와 폼: 편집 시 콘텐츠 불일치

**URL:** https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492
**Category:** Support
**Created:** [7월 4, 2023, 9:21오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492 "2023-07-04T09:21:40Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)
#### Post date: [7월 4, 2023, 9:21오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/1 "2023-07-04T09:21:40Z")

</div>

안녕하세요,

API **posts.json** 를 사용하여 HTML 콘텐츠를 게시한 후 게시글을 수정하면, 게시글 내용에서 HTML이 그대로 표시되는 것을 방금 확인했습니다.

**게시글 표시 방식:**

 ![image](https://global.discourse-cdn.com/meta/original/4X/c/7/f/c7f069e83a7245c3f46a9b1a07a7eef94c21a6ff.png)

**수정 버튼을 클릭했을 때:**

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/c/c/3cc5c9a5f3429a0398396ba4d5f1ce83034441cf.png)

**API 요청:**

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/1/7/f17382e1b00c5d615d63be37e80cb4bccd7bb73b.png)

폼을 통해 직접 게시글을 작성하는 경우, 수정 화면에서 HTML은 표시되지 않습니다(표시 방식은 동일함):

 ![image](https://global.discourse-cdn.com/meta/original/4X/2/b/2/2b2d05b5d4c5c5f69ff635035728fbff42a51e43.png)

게시글을 수정할 때 콘텐츠에 HTML이 표시되지 않도록 하는 방법은 무엇인가요?

감사합니다 🙂

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [7월 4, 2023, 9:31오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/2 "2023-07-04T09:31:01Z")

</div>

Hi Luicid 👋

컴포저에 표시되는 원본 콘텐츠는 HTML 태그 배열을 허용하므로, 태그가 일반 텍스트로 표시됩니다.

`<br>` 태그를 사용하지 않고 줄바꿈을 추가하려면 `\n`을 대신 사용하세요. 🙂

```plaintext
First line\nNew line

```

두 개의 단락을 만들고 싶다면 추가적인 줄바꿈을 추가해야 합니다:

```plaintext
First line\n\nNew line

```

 ![image](https://global.discourse-cdn.com/meta/original/4X/6/f/8/6f801bb1305a51bc71f6dae238218a4173df2fec.png)

이 메시지를 수정하면 `<br>` 태그가 표시되지 않습니다.

참고: 게시물이 처리될 때 컨텍스트에 따라 단락이 자동으로 생성되므로, 쿼리 원본 입력에 이러한 태그를 추가할 필요가 없습니다.

---

<div class="post-metadata">

### Author: ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)
#### Post date: [7월 4, 2023, 9:37오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/3 "2023-07-04T09:37:52Z")

</div>

다시 인사드립니다, Canapin 🙂

네, 알겠습니다. 제가 이해한 바로는, 사용자가 API를 통해 **이전된**  **HTML**  **게시물** 을 편집할 때 깔끔한 표시를 하려면 모든 `<p>` 태그와 `<br>` 태그를 `\n`으로 대체하는 것이 유일한 방법이라는 거죠?

감사합니다

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [7월 4, 2023, 10:12오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/4 "2023-07-04T10:12:07Z")

</div>

가져온 HTML 콘텐츠를 정제하려고 한다면, 단락을 줄바꿈으로 대체하는 것도 좋은 방법입니다. 이렇게 하면 줄바꿈이 확실하게 포함되며, 게시물이 올바르게 처리됩니다.

```html
<p>some text</p><p>some other text</p>

```

은 다음과 같이 변환됩니다:

```plaintext
\nsome text\n\nsome other text\n

```

그리고 다음과 같이 렌더링됩니다:

* * *

some text

some text

* * *

---

<div class="post-metadata">

### Author: ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)
#### Post date: [7월 4, 2023, 10:30오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/5 "2023-07-04T10:30:53Z")

</div>

네, 감사합니다 🙂  
마지막 질문이 하나 있습니다:  
API를 통해 게시물에 @Canapin과 같은 멘션을 추가하는 방법이 있을까요? raw 필드에 @username을 사용해 봤는데 작동하지 않아요.

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [7월 4, 2023, 10:34오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/6 "2023-07-04T10:34:16Z")

</div>

JSON 페이로드를 보내는지 확인하세요.

```json
{
    "raw": "Test mention: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

```

결과로 작동하는 멘션이 생성됩니다:

 ![image](https://global.discourse-cdn.com/meta/original/4X/5/7/2/5728dd184e9a74b47d3bdffacde139a3ab053d88.png)

---

<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: [7월 4, 2023, 10:35오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/7 "2023-07-04T10:35:45Z")

</div>

대량의 데이터를 가져오는 경우, 가져오기 스크립트를 사용해야 합니다. 이러한 스크립트 중 많은 것에는 HTML을 제거하고 인용문 및 멘션을 처리하는 예제가 포함되어 있습니다.

기존 사이트에 데이터를 지속적으로 추가하려면 API를 사용하세요.

---

<div class="post-metadata">

### Author: ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)
#### Post date: [7월 4, 2023, 10:40오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/8 "2023-07-04T10:40:22Z")

</div>

아, 제 실수를 알겠어요! 멘션은 대소문자를 구분하기 때문에 정확한 사용자 이름 대신 소문자 사용자 이름으로 테스트하고 있었네요. 죄송합니다.

도움을 주느라 시간을 내주셔서 감사합니다! 😉

좋은 하루 보내세요!

---

<div class="post-metadata">

### Author: ![Luicid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/luicid/32/306711_2.png) [@Luicid](https://meta.discourse.org/u/Luicid)
#### Post date: [7월 4, 2023, 10:45오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/9 "2023-07-04T10:45:11Z")

</div>

솔직히 말하면, Ruby로 임포트 스크립트를 작성해 POC를 만들었지만, 기존 솔루션과 Discourse 사이에 며칠 동안 데이터를 동기화해야 하므로 간단한 Python 스크립트를 실행하는 쪽을 선호합니다. 설정과 유지보수가 훨씬 빠르기 때문입니다. 또한, 기존 데이터를 Python으로 스크래핑하고 있으므로 일관성도 있습니다. 이전 제공업체가 데이터베이스 접근 권한을 주지 않아, 모든 콘텐츠를 데이터베이스로 스크래핑해 두었습니다.

물론 단순한 마이그레이션이 더 나은 해결책이겠지만요 🙂

---

<div class="post-metadata">

### Author: ![Canapin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/canapin/32/119591_2.png) [@Canapin](https://meta.discourse.org/u/Canapin)
#### Post date: [7월 4, 2023, 10:56오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/10 "2023-07-04T10:56:41Z")

</div>

대소문자를 변경해도 멘션이 작동해야 합니다:

![image](https://global.discourse-cdn.com/meta/original/4X/7/f/4/7f4be1d60359dae2fb742e7e93221804a29bfa5e.png)

첫 번째 게시물에 있는 스크린샷은 form-data를 사용하고 있습니다. JSON 형식의 raw 필드를 사용해야 합니다. 🙂

---

<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: [8월 3, 2023, 10:57오전 UTC](https://meta.discourse.org/t/api-vs-form-content-mismatch-when-edited/270492/11 "2023-08-03T10:57:19Z")

</div>

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