Ho seguito la documentazione e, tuttavia, aggiorna solo il titolo dell’argomento, senza aggiornare il corpo.
Il mio codice (Javascript):
async function updateDiscourseTopic(topic_id) {
const Discourse_API_Key = "Discourse_API_Key";
const url = `https://discourse.mysite.com/t/-/${topic_id}.json`;
const payload = {
title: 'session_1',
raw: "nuovo corpo (non applicato)"
}
const response = await fetch(url, {
method: 'PUT',
headers: {
"Api-Key": Discourse_API_Key,
"Api-Username": "system",
"Content-Type": "application/json",
},
body: JSON.stringify(payload)
});
}
Lilly
(Lillian Louis)
2
solo un’ipotesi basata sul codice, ma forse è perché stai usando topic_id invece di post_id? perché il primo post è il topic in Discourse, più o meno?
3 Mi Piace
Canapin
(Coin-coin le Canapin)
3
@Lilly ha ragione.
Un topic è definito da attributi come titolo, categoria, tag, ecc.
Ma il contenuto appartiene a un post.
Se vuoi aggiornare il titolo e il contenuto, hai bisogno di 2 richieste.
-
PUT sul topic
-
PUT sul primo post. Puoi trovare l’ID del post nel codice HTML della pagina. Cerca l’attributo data-post-id in <article>.
Esempio:
<article id="post_2" aria-label="post #2 by @Lilly" role="region" data-post-id="1288311" data-
topic-id="264640" data-user-id="127856" class="boxed onscreen-post">
3 Mi Piace
Wow, hai ragione, funziona 
E ho capito come recuperare l’ID del primo post in un argomento usando l’API di Discourse:
async function getFirstPostIdFromOnetopic(topic_id) {
const Discourse_API_Key = "Discourse_API_Key";
const url = `https://discourse.mysite.com/t/${topic_id}/posts.json`;
const response = await fetch(url, {
method: 'GET',
headers: {
"Api-Key": Discourse_API_Key,
"Api-Username": "system",
"Content-Type": "application/json",
}
});
const data = await response.json();
const firstPostId = data.post_stream.posts[0].id;
return firstPostId;
}
Grazie e @Lilly 
3 Mi Piace
system
(system)
Chiuso
5
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.