|
1 |
| -# HG 公开接口文档 |
2 |
| -## 一、基本 |
3 |
| -### 1.1 请求约定 |
4 |
| -**域名:https://hellogithub.com** |
| 1 | +# HelloGitHub 协作开发规范 |
| 2 | +## 一、项目介绍 |
| 3 | +编程是让流程变得更加简单、方便的途径,以下项目都是为了方便更好的发掘、推荐 GitHub 上优秀的开源项目。 |
5 | 4 |
|
6 |
| -- GET 方法,参数只有一个 `q`。所有的参数 json 序列化后,通过 `q` 参数传递,具体参数说明下面的接口说明会说明 |
7 |
| -- POST 方法,参数全部通过 json 提交。`hearder` key-value 对为:`Content-Type:application/json` |
| 5 | +- [官网](https://hellogithub.com)、[HelloGitHub 开源项目](https://github.com/521xueweihan/HelloGitHub) |
| 6 | +- 前端项目:[taichi](https://github.com/HelloGitHub-Team/taichi),可视化前端项目 |
| 7 | +- 后端项目:[hellogithub.com](https://github.com/521xueweihan/hellogithub.com) 目前正在基于 fastapi 重构中(完成后开源) |
8 | 8 |
|
9 |
| -例如: |
10 |
| -- 获取月刊第 1 期的内容: |
11 |
| - ``` |
12 |
| - https://hellogithub.com/api/v1/volume/projects/?q={"id": 1} |
13 |
| - ``` |
14 |
| -- 获取 C# 分类的内容: |
15 |
| - ``` |
16 |
| - http://hellogithub.com//api/v1/category/projects/?q={"id": 9, "page":1} |
17 |
| - ``` |
| 9 | +开源项目协作开发是一件自由且松散的事情,但是项目工程又是一件严谨的事情。所以需要一些规范来让事情有条不紊的进展和推进,所以下面列举了一些一起协作开发之前需要知道的事情和规范。 |
18 | 10 |
|
| 11 | +## 二、规范 |
| 12 | +1. [接口文档](doc/api.md) |
| 13 | +2. [Git 工作流]() |
| 14 | +3. [项目进度管理](doc/projects.md) |
19 | 15 |
|
20 |
| -#### 1.2 响应约定 |
21 |
| -响应状态通过 HTTP status code 反应,规则如下: |
22 |
| -- 200:成功 |
23 |
| -- 400:参数错误 |
24 |
| -- 401:未登录 |
25 |
| -- 403:禁止访问 |
26 |
| -- 404:未找到 |
27 |
| -- 500:服务器异常 |
| 16 | +## 三、加入我们 |
| 17 | +目前项目整体正处于前后端分离、重构的阵痛期,每个人的时间都很宝贵,请阅读完已知有限信息后。不欢迎需要督促、伸手党,确定要和我们一起做一些让你骄傲和有意义的事情后再联系我。 |
28 | 18 |
|
29 |
| -成功响应模版: |
30 |
| -``` |
31 |
| -{ |
32 |
| - "message": "OK", # 成功一般为 OK |
33 |
| - "payload": [] # 请求返回的数据 |
34 |
| -} |
35 |
| -``` |
| 19 | +请思考一个问题:你坚持最久的一件事情是什么,坚持了多长时间? |
36 | 20 |
|
37 |
| -**Tips:** 字段说明会在响应例子中以 `#` 出现 |
| 21 | +微信:xueweihan(备注:前端 or 后端),然后把你的经历告诉我。 |
38 | 22 |
|
39 |
| -#### 1.3 认证 |
40 |
| -采用 Basic Auth 方式: |
41 |
| -- `username`:随便(可以不写) |
42 |
| -- `password`:为 token(用于认证权限) |
43 | 23 |
|
44 |
| -示例: |
45 |
| -``` |
46 |
| -➜ ~ curl -u 随便:token https://hellogithub.com/api/v1/ |
47 |
| -{ |
48 |
| - "message": "HG API-v1 hello world." |
49 |
| -} |
50 |
| -``` |
51 |
| - |
52 |
| -## 二、获取类接口说明 |
53 |
| -### 2.1 按照期数获取项目 |
54 |
| -PATH:`/api/v1/volume/projects/` |
55 |
| - |
56 |
| -方法:`GET` |
57 |
| - |
58 |
| -参数: |
59 |
| - |
60 |
| -| 名称 | 必须 | 类型 | 描述 | |
61 |
| -| ------- | ----- | ----- | ----- | |
62 |
| -| id | 否 | int | 某一期的id | |
63 |
| - |
64 |
| -**Tips:** 默认返回最新一期 |
65 |
| - |
66 |
| - |
67 |
| -响应: |
68 |
| -``` |
69 |
| -{ |
70 |
| - "message": "OK", |
71 |
| - "payload": [ |
72 |
| - { |
73 |
| - "category": "其它", # 项目类别 |
74 |
| - "description": "(英文)这个项目收集了很多 SEO 优化的建议\n", # 描述(Markdown语法) |
75 |
| - "sort_desc": "谷歌 Material Design 设计风格控件库", # 简短描述,纯文本 |
76 |
| - "img_url": "", # 配图地址 |
77 |
| - "name": "search-engine-optimization", # 项目名称 |
78 |
| - "update_time": "2018-11-28 13:56:00", # 发布时间 |
79 |
| - "url": "https://github.com/marcobiedermann/search-engine-optimization", # 项目地址 |
80 |
| - "volume": "32" # 第几期 |
81 |
| - }, |
82 |
| - .... |
83 |
| - ] |
84 |
| -} |
85 |
| -
|
86 |
| -``` |
87 |
| - |
88 |
| -### 2.2 按照分类获取项目 |
89 |
| -PATH:`/api/v1/category/projects/` |
90 |
| - |
91 |
| -方法:`GET` |
92 |
| - |
93 |
| -参数: |
94 |
| - |
95 |
| -| 名称 | 必须 | 类型 | 描述 | |
96 |
| -| ------- | ----- | ----- | ----- | |
97 |
| -| id | 否 | int | 某一类别的id | |
98 |
| -| page | 否 | int | 第几页(1为第一页) | |
99 |
| - |
100 |
| -**Tips:** 默认随机返回一个类别的第一页,每页10个项目 |
101 |
| - |
102 |
| -响应: |
103 |
| -``` |
104 |
| -{ |
105 |
| - "current_page": , # 当前页 |
106 |
| - "has_more": true, # 是否下一页还有数据 |
107 |
| - "message": "OK", |
108 |
| - "payload": [ |
109 |
| - { |
110 |
| - "category": "Python 项目", |
111 |
| - "description": "使用该库可以优雅地实现各种需求的重试。示例代码如下", |
112 |
| - "sort_desc": "谷歌 Material Design 设计风格控件库", # 简短描述,纯文本 |
113 |
| - "img_url": "", |
114 |
| - "name": "tenacity", |
115 |
| - "update_time": "2018-06-27 22:26:19", |
116 |
| - "url": "https://github.com/jd/tenacity", |
117 |
| - "volume": "27" |
118 |
| - }, |
119 |
| - ... |
120 |
| - ] |
121 |
| -} |
122 |
| -``` |
123 |
| - |
124 |
| -### 2.3 获取所有分类信息 |
125 |
| -PATH:`/api/v1/category/` |
126 |
| - |
127 |
| -方法:`GET` |
128 |
| - |
129 |
| -参数:无 |
130 |
| - |
131 |
| -响应: |
132 |
| -``` |
133 |
| -{ |
134 |
| - "message": "OK", |
135 |
| - "payload": [ |
136 |
| - { |
137 |
| - "id": 11, |
138 |
| - "name": "C 项目" |
139 |
| - }, |
140 |
| - { |
141 |
| - "id": 9, |
142 |
| - "name": "C# 项目" |
143 |
| - }, |
144 |
| - ... |
145 |
| - ] |
146 |
| -} |
147 |
| -``` |
148 |
| - |
149 |
| -### 2.4 获取所有期的信息 |
150 |
| -PATH:`/api/v1/volume/` |
151 |
| - |
152 |
| -方法:`GET` |
153 |
| - |
154 |
| -参数:无 |
155 |
| - |
156 |
| -响应: |
157 |
| -``` |
158 |
| -{ |
159 |
| - "message": "OK", |
160 |
| - "payload": [ |
161 |
| - { |
162 |
| - "id": 34, |
163 |
| - "name": "31", |
164 |
| - "update_time": "2018-09-28 10:31:25" |
165 |
| - }, |
166 |
| - ... |
167 |
| - ] |
168 |
| -} |
169 |
| -``` |
170 |
| -## 三、推荐项目接口 |
171 |
| -PATH:`/api/v1/project/recommend/` |
172 |
| - |
173 |
| -方法:`POST` |
174 |
| - |
175 |
| -参数: |
176 |
| - |
177 |
| -| 名称 | 必须 | 类型 | 描述 | |
178 |
| -| ------- | ----- | ----- | ----- | |
179 |
| -| title | 是 | string | 标题 | |
180 |
| -| description | 是 | string | 对该项目的描述 | |
181 |
| -| url | 是 | string | 推荐项目的地址(最长150)| |
182 |
| -| category | 否 | string | 推荐项目的类别 | |
183 |
| -| langPrimary | 是 | string | 推荐项目的主要编程语言 | |
184 |
| -| watch | 否 | int | 推荐项目的 watch 数量 | |
185 |
| -| star | 否 | int | 推荐项目的 star 数量 | |
186 |
| -| fork | 否 | int | 推荐项目的 fork 数量 | |
187 |
| -| source | 是 | string | 用于标记提交的来源 | |
188 |
| -| device | 是 | string | 用于标记提交的设备 | |
189 |
| - |
190 |
| - |
191 |
| -**Tips:** 根据 url 校验是否重复,如果重复记录第一次推荐的内容。就算推荐的项目重复也返回 `200 OK` |
192 |
| - |
193 |
| -响应: |
194 |
| -``` |
195 |
| -{ |
196 |
| - "message": "OK" |
197 |
| -} |
198 |
| -``` |
| 24 | +## 四、声明 |
| 25 | +<a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh"><img alt="知识共享许可协议" style="border-width: 0" src="https://licensebuttons.net/l/by-nc-nd/4.0/88x31.png"></a><br>本作品采用 <a rel="license" href="https://creativecommons.org/licenses/by-nc-nd/4.0/deed.zh">署名-非商业性使用-禁止演绎 4.0 国际</a> 进行许可。 |
0 commit comments