首页 > 代码库 > MetaWebBlogApi开发经验

MetaWebBlogApi开发经验

背景

花了一天的时间为某笔记软件开发了一款插件,能够发布笔记到博客园,本文就是记录开发时遇到的问题和解决方案,希望有大佬能开发出更好用的博客编辑器.

为什么要开发?
现在有很多开源的建站工具hexo,jekyll等,许多人都喜欢自己建博客,但是自己的博客又没人看,很多为了提高自身知名度的猿发博客时不仅发到自己的博客,也发到简书,博客园等知名社区,显然这种操作是低效的.
以前喜欢为知笔记的发布博客功能,但是他收费后我就弃坑了,转投其他笔记软件。
为了能够方便的“提高知名度”自己开发了发布文章到博客园插件。

本文就是用插件发布的,会发现Markdown渲染还是有点问题,标签类的代码不能很好的渲染,所有该笔记软件的名字及其插件短期内不公布,自用。

MetaWeblog Api?

正式的解释我也不多说,也不贴wiki链接,反正知道利用这个Api能发博客,删博客等..
这是个很老的技术,目前支持该api的社区不多,博客园算一个.
可以就把他当做普通的Api用,最直接的不同点是,他发送与接收的数据是XML格式

目前博客园支持的Api有(通过查看博客园api地址可知)

  • blogger.deletePost
  • blogger.getUsersBlogs
  • metaWeblog.editPost
  • metaWeblog.getCategories
  • metaWeblog.getPost
  • metaWeblog.getRecentPosts
  • metaWeblog.newMediaObject
  • metaWeblog.newPost
  • wp.newCategory

可以看出除了metaWeblog还有其他类型Api(没开发到,我也不懂)

请求样例

说了那么多都不如一个请求报文.
这是用PostMan测试时保存的请求体。
这是在测试metaWeblog.getRecentPosts接口,根据博客园api地址中描述,该接口有4个参数

  • blogid
  • username
  • password
  • numberOfPosts

在请求时,这些参数必须按序的组织到请求报文中。可能有人会问什么一点要用有<methodCall>这些节点?…这些都是规范要求的(见文章尾),这个坑也废了我一点时间.

技术分享

响应报文就不给了,也是xml,需要自己解析,每个Api的请求结果也在博客园api地址中描述了.

经验

  • 一般文章都有图片,所以要先找到自己文章中的图片用metaWeblog.newMediaObject创建图片,再替换文章中图片的路径
  • Api中似乎所有的blogid都可以不填
  • 根据规范,请求时会吧请求内容转义,所以如果Markdown代码是HTML,XML标签类的则需另外处理。
    比如<div>发送中会变成<div<,然后在页面上又变成<div>,但是这样会被解析为HTML标签,所以发送时要发送&lt;div&lt;,这样页面上就是<div<,显示为<div>
  • 我是使用code-prettifyMarkdown.Converter,先把Markdown变成html,再特别地对代码块处理,值得注意的是对于标签类代码,需要先转义后(<div<)才能用code-pretty

图片的请求报文的部分
技术分享

相关资料

  • 博客园api地址
  • xml规范
  • MetaWebBlogApi规范
  • MetaWebBlogApi for nodeJs

MetaWebBlogApi开发经验