# embed.js에서 external\_id를 노출하기

**URL:** https://meta.discourse.org/t/expose-external-id-in-embed-js/280834
**Category:** Feature
**Tags:** embedding
**Created:** [10월 3, 2023, 5:35오전 UTC](https://meta.discourse.org/t/expose-external-id-in-embed-js/280834 "2023-10-03T05:35:16Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Aaron\_B](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaron_b/32/327391_2.png) [@Aaron\_B](https://meta.discourse.org/u/Aaron_B)
#### Post date: [10월 3, 2023, 5:35오전 UTC](https://meta.discourse.org/t/expose-external-id-in-embed-js/280834/1 "2023-10-03T05:35:16Z")

</div>

외부 사이트에서 게시물을 로드해야 하는데, post\_id는 알 수 없지만 토픽을 생성할 때 설정한 external\_id는 알고 있습니다.

누군가 embed.js 로직에서 external\_id 변수를 노출해 주시거나, 제가 놓치고 있는 부분이 무엇인지 알려 주실 수 있을까요?

예시 지원 요청:

> window.DiscourseEmbed = {  
> discourseUrl: ‘[https://forums.blah.org/](https://forums.blah.org/)’,  
> external\_id: ‘2023-4’  
> };

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [10월 3, 2023, 6:49오전 UTC](https://meta.discourse.org/t/expose-external-id-in-embed-js/280834/2 "2023-10-03T06:49:13Z")

</div>

API를 통해 주제를 생성하고 `external_id` 파라미터를 설정하셨다고 가정합니다.

도움이 될지 확실하지는 않지만, Discourse에는 `t/external_id/:external_id` 라우트가 있습니다. JSON 데이터만 반환하는 것 같습니다:

> <https://github.com/discourse/discourse/blob/main/config/routes.rb#L1298C10-L1298C37>

따라서 (예를 들어)

`/t/external_id/2023-4.json`

주소에 접근하면 해당 Discourse 주제의 내용과 `id`가 반환됩니다. 다만 이것이 문제를 해결해 주지는 못할 것 같습니다.

지금 테스트해 보고 있는데, JSON 데이터는 반환되지만 요청을 보낼 때 Discourse가 실제 Discourse 주제 URL로 자동 리다이렉트를 수행합니다. 예를 들어 `http://localhost:4200/t/external_id/1.json`으로 `GET` 요청을 보내면 `http://localhost:4200/t/testing-the-external-id-param/206.json`으로 리다이렉트됩니다.

---

<div class="post-metadata">

### Author: ![Aaron\_B](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaron_b/32/327391_2.png) [@Aaron\_B](https://meta.discourse.org/u/Aaron_B)
#### Post date: [10월 3, 2023, 2:16오후 UTC](https://meta.discourse.org/t/expose-external-id-in-embed-js/280834/3 "2023-10-03T14:16:46Z")

</div>

임베디드 포스트의 포맷된 형태로 어떤 것을 구현하고 싶습니다. Discourse는 이미 해당 레이아웃을 잘 처리하고 있으므로, 제가 굳이 처음부터 다시 만들 필요가 없습니다.

external\_id로 검색하는 것을 허용하지 않는다면, 제 데이터베이스에 포럼 토픽 ID를 저장하고 그 방식으로 검색해야 합니다. API를 통해 토픽을 생성할 때 이미 external\_id에 고유 변수를 저장해 두었으므로, 이렇게 하는 것은 중복된 작업처럼 보입니다.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [10월 3, 2023, 6:49오후 UTC](https://meta.discourse.org/t/expose-external-id-in-embed-js/280834/4 "2023-10-03T18:49:40Z")

</div>

이제 이해한 것 같습니다. 여기 표시된 스크립트를 사용하시려는 것이죠: [https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963#alternate-configuration-linking-to-existing-topics-6](https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963#alternate-configuration-linking-to-existing-topics-6). 하지만 `topicId` 파라미터 대신 `external_id` 파라미터를 사용하시려는 것이죠.

이것을 기능으로 추가할 수도 있을 것입니다.

또한 클라이언트에서 (예를 들어) `http://localhost:4200/t/external_id/1.json`으로 요청을 보내는 것도 가능할 수 있습니다.  
그 후 응답에서 토픽의 실제 URL을 추출하고, 해당 URL을 파싱하여 토픽의 `id`를 추출하거나, 토픽 ID를 얻기 위해 토픽 URL로 두 번째 요청을 보낼 수 있습니다.  
이 방식은 오류가 발생하기 쉽습니다.

클라이언트가 아닌 서버에 임베드 스크립트를 추가하는 경우라면, `http://localhost:4200/t/external_id/1.json`으로 `GET` 요청을 보내고, Discourse 토픽의 `id`를 얻기 위해 필요한 작업을 수행한 후, 해당 `id`를 사용하여 스크립트를 웹 페이지에 삽입하면 됩니다.

---

<div class="post-metadata">

### Author: ![Aaron\_B](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/aaron_b/32/327391_2.png) [@Aaron\_B](https://meta.discourse.org/u/Aaron_B)
#### Post date: [10월 3, 2023, 7:12오후 UTC](https://meta.discourse.org/t/expose-external-id-in-embed-js/280834/5 "2023-10-03T19:12:21Z")

</div>

좋은 피드백을 주셔서 감사합니다. 고민해 볼 수 있는 좋은 내용들이네요. 기능 요청이 가장 직관적이지만, 제가 생각하지 못했던 몇 가지 아이디어가 마음에 듭니다!
