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>

我在空间中创建了一个页面Main。但我想在空间中发布一个 BlogPost Blog。我必须使用什么标记?(我在这里找到了这个命令)

4

2 回答 2

0

通常使用 REST,您希望将 PUT 消息发送到您希望创建(或更新)的 URL。因此,您将从:

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标题和父级添加到新文档中,然后您可以向其中添加对象。
  • 创建对象的正确动词是POST,通过附加/objects到文档的 REST URL 获得 URL。
  • 新创建对象的实际 REST URL 作为重定向返回。您可以拦截重定向并根据需要处理 URL,或者您可以让重定向通过,您将取回使用详细完整语法创建的对象。
  • 通常,发送资源时使用与获取资源时返回的语法相同的语法,尽管并非需要所有数据。例如,我首先获取一个现有的 blogpost 对象,然后删除服务器不需要接收的所有内容,因为它可以在本地计算它,从而获得了该对象的 XML。
  • 我注意到的一件事(我认为是一个错误)是,在获取资源时,XML 实体被编码两次(&amp;#39;),而发送的资源应该只编码一次(&#39;)。
于 2012-06-07T03:18:44.680 回答