前言
莫得评论的博客莫得灵魂——鲁迅。
Gitalk是什么
Gitalk 一开始应该是github
推出来配合搭建博客而做的评论插件。然而随着其他评论插件的没落,Gitalk 就火起来了。
它基于 Github Issue
和 Preact
开发。
除了支持 Hexo
外,还支持 java
,php
等语言开发的博客。
为啥用Gitalk
之前其实还去看了其它的评论插件。一开始是打算用duoshuo
或者disqus
这两个插件其中一个(apollo主题自带)。然后:
duoshuo
已经停止服务(还有网易云更贴)disqus
的需要科学上网- 然后在寻找其它插件的时候碰巧看到了
Gitalk
,一定是特别的缘分。(其实是看到了git
三个字眼)
搭建步骤
- 在github搭建一个仓库来存放评论(因为我的hexo博客是和githubPage绑定的,就不创建新的了。直接用的我的博客仓库)
- 把仓库Issue开启(这个好像是默认开启的,如果没改的话就不用动了)
- 注册申请一个
Github Application
(点击此处可进入)
创建好了之后,复制你的ClientID,ClientSecret
。 - 在
hexo
主题下的config.yml
文件加入这段:
1 | gitalk: |
- 找到
hexo
主题内的评论模板comment.jade
和头部模板head.jade
,在里面新加以下代码:
1 | // 我提前把gitalk的css和js文件下载到本地了 |
遇到的问题
一开始,我发现在调用github的api时总是报错,返回状态码为:422。由于之前422我从来没有碰到过。于是我就去搜索了一下422的含义:
422 Unprocessable Entity:请求格式正确,但是由于含有语义错误,无法响应。422 则表现为请求格式错误,但出现了 语义 错误,以至于服务端无法响应。可以理解为服务端能理解请求资源类型content-type
,否则应该返回 415(Unsupported Media Type),也能理解请求实体内容,否则应该返回 400(Bad Request)。
后面我根据接口去慢慢调试,发现是请求体中的label=['Gitalk,location.pathname']
参数内包含了location.pathname
导致的错误。其实这里我并没想传这个location.pathname
,我传的应该是pathname
的value
才对。 然后我才发现,原来config.yml
里面的内容其实都是string
类型。于是把params.id
写在了comment.jade
里。最后成功解决了问题。
总结
所以说,平时还是要细心点才好。不过这波也不亏。学到了http状态码的知识。422(格式正确,语义有错误),415(不支持该请求资源类型),400(请求实体内容有误。这个一般是请求体内的参数有问题)
That’s all! Thanks for watching!