陈斌彬的技术博客

Stay foolish,stay hungry

使用 Curl 通过 Api 管理 Github 的库

github提供了管理库的api,我们可以利用curl(我是在Linux系统下)这个工具,来利用github的api对github上的库进行管理。

github对库的的各种api在这里查看: https://developer.github.com/v3/repos/

从里面选几个例子:

GET /users/:user/repos
POST /user/repos
DELETE /repos/:owner/:repo

这些api一般由两部分组成,前面大写的单词和后面带有斜杠的一些东西。

前面的大写单词表示网络请求,具体啥请求我暂不知道称呼,后面是地址,如/user/repos在使用的时候就换成https://api.github.com/user/repos,也就是在前面加上域名,其它都是这样。

像这样/repos/:owner/:repo,里面有冒号,不能照抄,实际上冒号和后面的单词组成的这部分是要被替换掉的,:owner:user一个表示库所有者,这个表示用户,反正都是换成github用户名,:repo换成库名。其它带冒号的先自己推断吧。

再看curl的使用,它是一个命令行工具。

各种请求curl怎么发?我在man手册看的,GET用参数-G。可以用-X参数并在它后面直接加上请求名,如-X DELETE,-X PATCH。POST呢?一般POST请求都要带数据的把,数据传输要用到-d参数,只用这个参数而没用其它请求的时候,就认为的POST请求,当然你也可以加上-X POST。

Ok,接下来说怎么传数据。有的api是需要传数据的,如创建库。

curl的数据传输放在-d参数的后面。

github api的数据格式你也可以在那个api页面看到,是包含在花括号中,里面各个部分的信息用逗号隔开。每部分信息由名字和值两部分组成,用冒号隔开,名字要加双引号,值如果是字符串也要加双引号,具体例子如:

{“name”: “Hello-World”,”description”: “This is your first repository”} 

各部分信息有的是必须的,有的可以省略。

在curl的-d参数后面的信息要放在单引号里面如:

-d ‘{“name”: “Hello-World”,”description”: “This is your first repository”}’

后面地址部分直接把完整地址放在后面即可。

对了,建立连接有时候需要权限的吧,如建立或删除库时。此时再多加个curl的参数-u,后面跟用户名。如-u xxx

举个完整例子,这个是创建库的:

curl -u username -d ‘{“name”: “Hello-World”,”description”: “This is your first repository”}’ https://api.github.com/user/repos

提醒一点,注意参数大小写。