0

(XWiki API REST を使用して) BlogPost を作成する必要があります。しかし、私はRESTの使い方を知りません...このコマンドで:

$ curl -u Admin:admin -X PUT --data-binary "@newpage.xml" -H "Content-Type: application/xml" http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/Main/pages/NewPage

そして、この XML ファイルで:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<page xmlns="http://www.xwiki.org">     
        <title>Hello world</title>
        <syntax>xwiki/2.0</syntax>
        <content>This is a new page</content>
</page>

スペースに Page を作成しますMain。しかし、スペースに BlogPost が必要Blogです。使用する必要があるマークアップは何ですか? (このコマンドはこちらで見つかりました)

4

2 に答える 2

0

通常、REST では、作成 (または更新) する URL に PUT メッセージを送信することが期待されます。したがって、次のように変更します。

http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/Main/pages/NewPage

BlogPostおそらくこれに(スペースで作成していると仮定してBlog):

http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/Blog/pages/BlogPost

コマンドの残りの部分は、自分に合ったものにする必要があります。現在、メインスペースにページを作成するために機能しているので、これで十分だと思います。

于 2012-06-04T07:58:07.180 に答える
0

使用する正しいコマンドは次のとおりです。

curl -u Admin:admin -X POST --data-binary "@blogpost.xml" -H "Content-Type: application/xml" http://localhost:8080/xwiki/rest/wikis/xwiki/spaces/Blog/pages/A+New+Blogpost/objects

XML ファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<object xmlns="http://www.xwiki.org"><className>Blog.BlogPostClass</className>
    <property name="category"><value>Blog.News</value></property>
    <property name="content"><value>This is the new blog post. You can use **wiki syntax** in it.

Don't forget to escape XML entities like &amp; and &lt;!</value></property>
    <property name="publishDate"><value>2012-06-06 12:00:00.0</value></property>
    <property name="published"><value>1</value></property>
    <property name="title"><value>Second blog post</value></property>
</object>

注意すべき点がいくつかあります。

  • ドキュメントは既に存在している必要があります。これは、存在しないドキュメントでは機能しません。したがって、最初に行うことはPUT、タイトルと親を新しいドキュメントに追加することです。次に、それにオブジェクトを追加できます。
  • オブジェクトを作成するための正しい動詞は です。URL は、ドキュメントの REST URL にPOST追加することによって取得されます。/objects
  • 新しく作成されたオブジェクトの実際の REST URL がリダイレクトとして返されます。リダイレクトをインターセプトして、必要に応じて URL を処理するか、リダイレクトを通過させて、詳細な完全な構文で作成されたオブジェクトを取得することができます。
  • 一般に、リソースを送信するときは、リソースを取得するときに返されるものと同じ構文が使用されますが、すべてのデータが必要なわけではありません。たとえば、このオブジェクトの XML を取得するには、最初に既存の blogpost オブジェクトを取得し、次にサーバーが受信する必要のないものをすべて削除します。これは、サーバーがローカルで計算できるためです。
  • 私が気づいたことの 1 つ (そして私はバグだと考えています) は、リソースを取得するときに XML エンティティが 2 回エンコードされる ( &amp;#39;) のに対し、送信されるリソースはエンティティを 1 回だけエンコードする必要がある ( &#39;) ことです。
于 2012-06-07T03:18:44.680 に答える