alank
(Andrew Lank)
1
API の Discourse ドキュメントにこのような構造が記載されているのですが、その意味がわかりません。
{
"post[raw]": "string",
"post[raw_old]": "string",
"post[edit_reason]": "string",
"post[cooked]": "string"
}
これを実装する前に、これは何を意味するのでしょうか?
つまり、{post: {raw: ..., raw_old: ... }} という構造を指しているのでしょうか?
それとも単に {raw: "", raw_old: ""...} という形式でしょうか?
また、raw_old とは何でしょうか?各要素は JSON ボディに PUT する必要がある「文字列」としか記載されていません。
私は、ボットによって当初作成された投稿の冒頭に、別のサイトへのリンクを追加しようとしています。なお、その最初の段落をカテゴリタイトルの下に表示したいと考えており、cooked の <div> 要素(カテゴリタイトルの直下に定義されているもの)で表示させる必要があります。
この説明で伝わるでしょうか?もし不明な点があれば、 clarification をお寄せください。
blake
(Blake Erickson)
2
現時点で raw_old が何のために使われるのか確信が持てませんが、raw フィールドを使用するだけで投稿全体が置き換わります。したがって、コードでは編集したい投稿を取得し、その先頭に新しい行を追加してから、raw フィールドを使って投稿を更新してください。
Discourse がどのように実装しているかを確認するには、サイト上で投稿をリアルタイムに編集し、ブラウザのネットワーク呼び出しを検証するのが役立つかもしれません:
discourse_api gem も同様の方法で実装されています:
alank
(Andrew Lank)
3
これについて一点質問ですが、Discourse API Docs で定義されているものとは異なるドキュメントを指しているのでしょうか?それは興味深いですね……ただし、私は API ドキュメントに基づいて判断しています。
私の単純な目標は、カテゴリ名の下にコメントとリンクを追加することです。Discourse は「About …」トピックの最初の投稿からその情報を取得していると考えていますが、合っていますか?つまり、
…
要素に何が入るのか、あるいは私の投稿をそこに表示させるために何をする必要があるのかを知りたいだけです。私の説明は理解できますでしょうか?
alank
(Andrew Lank)
4
上記の通り、また試行した結果、API ドキュメントに記載されている通り「cooked」を使用して投稿を更新することはできません。ただし、「raw」を使用すれば更新可能です。「cooked」を使用すると、投稿が20文字未満である、または明確な文になっていないという理由で無効というエラーが返され続けました。
ただし、「raw」には別の問題もあり、これについては直接関係ないため、別途投稿する予定です。
ご支援いただき、ありがとうございました。
API Docs にわずかな不一致があります。
ドキュメントでは、以下の通り記載されています:PUT /posts/{id}.json にペイロード
Content type: application/json
{
"post[raw]": "string",
"post[raw_old]": "string",
"post[edit_reason]": "string",
"post[cooked]": "string"
}
しかし、これは PUT /posts/{id} と Content-Type: application/x-www-form-urlencoded の場合にのみ機能します。
PUT /posts/{id}.json の正しいペイロードは以下の通りです:
Content type: application/json
{
"post": {
"raw": "string",
"raw_old": "string",
"edit_reason": "string",
"cooked": "string"
}
}
raw パラメータのみで投稿全体を置換することが可能です。
alank
(Andrew Lank)
7
はい、ありがとうございます。Postmanでいくつかリクエストを送ってみて、いろいろ試しているうちに気づきました。また、私の試行では「cooked」は何も効果がないように見えました。「raw_old」が何なのか、いまだに確信が持てません。
simon
9