首页 > 代码库 > 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标签,所以发送时要发送<div<
,这样页面上就是<div<
,显示为<div>
- 我是使用
code-prettify
和Markdown.Converter
,先把Markdown变成html,再特别地对代码块处理,值得注意的是对于标签类代码,需要先转义后(<div<
)才能用code-pretty
图片的请求报文的部分
相关资料
- 博客园api地址
- xml规范
- MetaWebBlogApi规范
- MetaWebBlogApi for nodeJs
MetaWebBlogApi开发经验