/
api-projects.json
211 lines (211 loc) · 15.9 KB
/
api-projects.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
{
"name": "API Projects",
"order": 26,
"time": "150 hours",
"helpRoom": "chinese",
"challenges": [
{
"id": "bd7158d8c443eddfaeb5bcef",
"title": "Get Set for our Back End Development Projects",
"description": [
[
"//i.imgur.com/4IZjWZ3.gif",
"A gif showing how to create a c9.io account.",
"为了方便你完成接下来的挑战项目,这里推荐一个基于浏览器的在线开发环境 c9.io 。使用在线开发环境,你就不必在自己电脑上安装 Node.js 和 MongoDB 了,这样可以为你节省大把的时间来做练习。<br>打开 c9.io 主页后,点击右上角的 Github 图标,通过关联你的 Github 帐号来创建一个 c9.io 帐号。注意,最后一步需要填写你的邮箱地址。(整个过程可以参考上边的演示录像)。",
"http://c9.io"
],
[
"//i.imgur.com/F7i5Hhi.gif",
"A gif showing how to fill out the new workspace form",
"你没有必要自己造轮子去完成接下来的挑战,这里推荐使用集成了 MongoDB,Express 和 Node.js 的轻量级 JavaScript 全栈框架 Clementine.js 。如果有兴趣,请参考 Clementine.js 的完整教程一步一步构建自己的应用开发环境,这里我们只需要克隆它的源码到 c9.io 的开发环境就好了。<br>登录 c9.io 后,你需要创建一个新的 Workspace,模板选择 blank 即可,克隆地址填: <code>https://github.com/johnstonbl01/clementinejs-fcc.git</code> , 最后点击屏幕下方的 \"Create workspace\" 按钮,完成创建开发环境。(整个过程可以参考上边的演示录像)。",
""
],
[
"//i.imgur.com/42m1vyr.gif",
"A gif showing you how to show hidden files.",
"创建完毕后自动进入新建的 Workspace ,点击左侧导航栏右上角的齿轮图标,选择显示隐藏文件(\"show hidden files\")。(整个过程可以参考上边的演示录像)。",
""
],
[
"//i.imgur.com/qrE8xaK.gif",
"A gif showing you how to create a new file.",
"然后,在左侧导航栏的空白处点击鼠标右键,新建一个文件 <code>.env</code>。(整个过程可以参考上边的演示录像)。",
""
],
[
"//i.imgur.com/jkQX9SQ.gif",
"A gif showing you how to prep your environmental variables in your .env file.",
"打开刚刚新建的 .env 文件,把下边的代码粘帖进去,并保存:<br><code>GITHUB_KEY=<br>GITHUB_SECRET=<br>MONGO_URI=mongodb://localhost:27017/clementinejs<br>PORT=8080<br>APP_URL=http://localhost:8080/</code> 。(整个过程可以参考上边的演示录像)。",
""
],
[
"//i.imgur.com/f3DE7zB.gif",
"A gif showing you how to open c9.io's preview window.",
"点击标题栏上菜单 windows , 在下拉菜单中选择 share, 之后在弹出的窗口中点击 Application 右边的链接, 在弹出选项中选择 open 。此时会打开一个新的页面,注意这个页面就是你在 c9.io 中新建的 App 的主页,复制这个 App 的主页地址,下一步骤会用到。(整个过程可以参考上边的演示录像)。",
""
],
[
"//i.imgur.com/Ip0qUdQ.gif",
"A gif showing you how to create a GitHub app using c9.io's preview URL.",
"登录 Github ,进入你的 Profile 页面,在左侧列表中选择 OAuth applications ,之后在右边选择 Developer application 来创建一个鉴权 App 。 Application name 可以自己取, Homepage URL 填入上一步创建的 App 的主页地址。 Authorization callback URL 也填入相同的地址,并在后边加上相对路径:<code>auth/github/callback</code>。最后点击最下边的注册应用(Register Application)。(整个过程可以参考上边的演示录像)。",
"https://github.com/settings/applications/new"
],
[
"//i.imgur.com/qCUVRFb.gif",
"A gif showing you how to transfer GitHub's key and secret over to your .env file, as well as your c9.io URL.",
"在 Github 上的鉴权 App 已经创建完成,此时会显示 Client ID 和 Client Secret 。把 Client ID 和 Client Secret 分别赋给 .env 文件中的 GITHUB_KEY 和 GITHUB_SECRET。并把上文提到的 APP 地址赋给 APP_URL 。(整个过程可以参考上边的演示录像)。",
""
],
[
"//i.imgur.com/2a20Vah.gif",
"A gif showing you how to start mongoDB in c9.io's terminal.",
"在 c9.io 的命令行终端中输入以下命令以启动 mongoDB:<code>mongod --smallfiles</code>。",
""
],
[
"//i.imgur.com/dC55pWk.gif",
"A gif showing you how to open a new tab in c9.io's terminal.",
"新建一个命令行窗口,输入以下命令安装依赖包: <code>npm install</code> 。",
""
],
[
"//i.imgur.com/54OC2Ro.gif",
"A gif showing you how to navigate to your preview tab and sign in to your new Clementine.js app.",
"依赖包安装完毕,在命令行窗口中启动应用:<code>node server.js</code> 。回到前面打开的 App 主页并刷新,你应该可以看到 Clementine.js 的 logo,点击 \"sign in\" 并确认 Github 的鉴权请求。",
""
],
[
"//i.imgur.com/2IJfyvN.gif",
"A gif showing you how to click the button to trigger an AJAX action with Clementine.js and how to look at your user profile from the GitHub authentication data.",
"点击按钮 \"click me\" ,你应该可以看到点击数在增加。点击上边的 Profile 链接,可以看到从 Github 同步过来的个人信息。",
""
],
[
"//i.imgur.com/bjO5pnq.gif",
"A gif showing you how to create a new GitHub repository and push your code up to it.",
"在 Github 上创建一个新的仓库,然后拷贝仓库的 .git 地址。 <br>在 c9.io 的命令行窗口中,用刚刚新建的 Github 仓库地址设置 Remote URL : <code>git remote set-url origin</code> 。<br>然后,就可以把代码推到 Github 上去了: <code>git push origin master</code>。<br>完成后,在 Github 上就可以看到刚才推上去的代码了。(整个过程可以参考上边的演示录像)。",
"https://github.com/new"
],
[
"//i.imgur.com/Qn0K65B.gif",
"A gif showing you how to add add-ons to Heroku.",
"现在,你已经掌握如何在 c9.io 上开发部署 App 。后续我们将会进一步介绍在 Heroku 上部署 Clementine 的步骤(后续几个挑战都需要把完成的 App 部署到 Heroku 上,所以,请根据 Heroku 的文档自己练习一下如何部署 App 到 Heroku )。",
""
]
],
"challengeSeed": [],
"tests": [],
"type": "Waypoint",
"challengeType": 7,
"isRequired": false
},
{
"id": "bd7158d8c443edefaeb5bdef",
"title": "Timestamp Microservice",
"description": [
"<strong>目标:</strong> 参考这个例子: <a href='https://timestamp-ms.herokuapp.com/' target='_blank'>https://timestamp-ms.herokuapp.com/</a> ,完成一个全栈式 JavaScript 应用,并把它部署在 Heroku 上。",
"对于每个项目,你都需要建立一个独立的 Github 仓库,和一个 Heroku 项目。如果你不记得如何做,请回头参考这个说明: <a href='/challenges/get-set-for-our-back-end-development-projects'>https://freecodecamp.cn/challenges/get-set-for-our-back-end-development-projects</a>。",
"这个项目中需要完成的需求:",
"<strong>用户故事:</strong> 把一个字符串作为参数,判断该字符串是不是一个 Unix 时间,或者一个公历日期(例如:January 1, 2016)。",
"<strong>用户故事:</strong> 如果是,那么它同时返回 Unix 时间戳和公历日期。",
"<strong>用户故事:</strong> 如果不是,那么它返回 null 。",
"当你完成所有用户需求后,点击按钮 \"我已经完成了这个挑战\",在弹出窗口中,填入你的 Github 仓库地址和部署在 Heroku 上的应用的地址。",
"你可以把你的项目共享到我们的代码检视聊天室<a href='//gitter.im/freecodecamp/chinese' target='_blank'>Code Review Chatroom</a>以获取别人的意见和反馈,也可以通过微信或其他媒体帐号进行共享。"
],
"challengeSeed": [
"150324691"
],
"tests": [],
"isRequired": true,
"releasedOn": "January 1, 2016",
"type": "basejump",
"challengeType": 4
},
{
"id": "bd7158d8c443edefaeb5bdff",
"title": "Request Header Parser Microservice",
"description": [
"<strong>目标:</strong> 参考这个例子:<a href='https://cryptic-ridge-9197.herokuapp.com/api/whoami/' target='_blank'>https://cryptic-ridge-9197.herokuapp.com/api/whoami/</a>,完成一个全栈式 JavaScript 应用,并把它部署到 Heroku 上。",
"对于每个项目,你都需要建立一个独立的 Github 仓库,和一个 Heroku 项目。如果你不记得如何做,请回头参考这个说明: <a href='/challenges/get-set-for-our-back-end-development-projects'>http://freecodecamp.cn/challenges/get-set-for-our-back-end-development-projects</a>。",
"这个项目中需要完成的需求:",
"<strong>用户故事:</strong> 用户在浏览器输入该地址后,返回用户的 IP 地址,语言,操作系统等信息。",
"当你完成所有用户需求后,点击按钮 \"我已经完成了这个挑战\",在弹出窗口中,填入你的 Github 仓库地址和部署在 Heroku 上的应用的地址。",
"你可以把你的项目共享到我们的代码检视聊天室<a href='//gitter.im/freecodecamp/chinese' target='_blank'>Code Review Chatroom</a>以获取别人的意见和反馈,也可以通过微信或其他媒体帐号进行共享。"
],
"challengeSeed": [
"150324460"
],
"tests": [],
"isRequired": true,
"releasedOn": "January 1, 2016",
"type": "basejump",
"challengeType": 4
},
{
"id": "bd7158d8c443edefaeb5bd0e",
"title": "URL Shortener Microservice",
"description": [
"<strong>目标:</strong> 参考这个例子:<a href='https://shurli.herokuapp.com/' target='_blank'>https://shurli.herokuapp.com/</a>,完成一个全栈式 JavaScript 应用,并把它部署到 Heroku 上。",
"对于每个项目,你都需要建立一个独立的 Github 仓库,和一个 Heroku 项目。如果你不记得如何做,请回头参考这个说明: <a href='/challenges/get-set-for-our-back-end-development-projects'>http://freecodecamp.cn/challenges/get-set-for-our-back-end-development-projects</a>。",
"这个项目中需要完成的需求:",
"<strong>用户故事:</strong> 用户在浏览器输入该地址时,把一个合法的 URL 作为参数,返回一个 JSON 格式的段地址。",
"<strong>用户故事:</strong> 如果用户输入的是一个无效的 URL 地址(不符合 http://www.example.com 格式)作为参数,则返回错误。",
"<strong>用户故事:</strong> 如果用户输入前边生成的短地址,则会重定向到相应的合法地址。",
"当你完成所有用户需求后,点击按钮 \"我已经完成了这个挑战\",在弹出窗口中,填入你的 Github 仓库地址和部署在 Heroku 上的应用的地址。",
"你可以把你的项目共享到我们的代码检视聊天室<a href='//gitter.im/freecodecamp/chinese' target='_blank'>Code Review Chatroom</a>以获取别人的意见和反馈,也可以通过微信或其他媒体帐号进行共享。"
],
"challengeSeed": [
"150324692"
],
"tests": [],
"isRequired": true,
"releasedOn": "January 1, 2016",
"type": "basejump",
"challengeType": 4
},
{
"id": "bd7158d8c443edefaeb5bdee",
"title": "Image Search Abstraction Layer",
"description": [
"<strong>目标:</strong> 参考这个图片查询的例子: <a href='https://cryptic-ridge-9197.herokuapp.com/api/imagesearch/lolcats%20funny?offset=10' target='_blank'>https://cryptic-ridge-9197.herokuapp.com/api/imagesearch/lolcats%20funny?offset=10</a>, 以及这个显示最近几次查询情况的例子:<a href='https://cryptic-ridge-9197.herokuapp.com/api/latest/imagesearch/' target='_blank'>https://cryptic-ridge-9197.herokuapp.com/api/latest/imagesearch/</a>,完成一个全栈式 JavaScript 应用,并把它部署到 Heroku 上。",
"对于每个项目,你都需要建立一个独立的 Github 仓库,和一个 Heroku 项目。如果你不记得如何做,请回头参考这个说明: <a href='/challenges/get-set-for-our-back-end-development-projects'>http://freecodecamp.cn/challenges/get-set-for-our-back-end-development-projects</a>。",
"这个项目中需要完成的需求:",
"<strong>用户故事:</strong> 根据指定的字符串描述,获取一组符合描述的图片地址和文字描述以及页面地址。",
"<strong>用户故事:</strong> 可以在地址中增加一个参数 ?offset=2 来对返回结果进行分页。",
"<strong>用户故事:</strong> 可以获取一个列表,显示最近几次搜索的搜索语句和返回页面地址。",
"当你完成所有用户需求后,点击按钮 \"我已经完成了这个挑战\",在弹出窗口中,填入你的 Github 仓库地址和部署在 Heroku 上的应用的地址。",
"你可以把你的项目共享到我们的代码检视聊天室<a href='//gitter.im/freecodecamp/chinese' target='_blank'>Code Review Chatroom</a>以获取别人的意见和反馈,也可以通过微信或其他媒体帐号进行共享。"
],
"challengeSeed": [
"150324461"
],
"tests": [],
"isRequired": true,
"releasedOn": "January 1, 2016",
"type": "basejump",
"challengeType": 4
},
{
"id": "bd7158d8c443edefaeb5bd0f",
"title": "File Metadata Microservice",
"description": [
"<strong>目标:</strong> 参考这个例子:<a href='https://cryptic-ridge-9197.herokuapp.com/' target='_blank'>https://cryptic-ridge-9197.herokuapp.com/</a>,完成一个全栈式 JavaScript 应用,并把它部署到 Heroku 上。",
"对于每个项目,你都需要建立一个独立的 Github 仓库,和一个 Heroku 项目。如果你不记得如何做,请回头参考这个说明: <a href='/challenges/get-set-for-our-back-end-development-projects'>http://freecodecamp.cn/challenges/get-set-for-our-back-end-development-projects</a>。",
"这个项目中需要完成的需求:",
"<strong>用户故事:</strong> 我可以通过提交一个 FormData 对象来上传文件。",
"<strong>用户故事:</strong> 当我上传一个文件后,会收到一个 JSON 格式的响应,显示文件的大小。",
"<strong>提示:</strong> 你可能会用到这个模块: <a href='https://www.npmjs.com/package/multer' target='_blank'>https://www.npmjs.com/package/multer</a> 。",
"当你完成所有用户需求后,点击按钮 \"我已经完成了这个挑战\",在弹出窗口中,填入你的 Github 仓库地址和部署在 Heroku 上的应用的地址。",
"你可以把你的项目共享到我们的代码检视聊天室<a href='//gitter.im/freecodecamp/chinese' target='_blank'>Code Review Chatroom</a>以获取别人的意见和反馈,也可以通过微信或其他媒体帐号进行共享。"
],
"challengeSeed": [
"150324457"
],
"tests": [],
"isRequired": true,
"releasedOn": "January 1, 2016",
"type": "basejump",
"challengeType": 4
}
]
}