简单介绍

我是一个远程工作者(远程3年),从业六年一直在做python web后端相关的开发,最近闲来无事想看下Java是怎么写API的,知乎的一句话介绍贴在这里,大概介绍下笔者的经历。

不自由工作者 | 原子钟 SOHO | 知乎填坑一年 | 学堂在线造轮子两年

场景选择

之前带新人的时候一般是让新同学通过修bug熟悉项目熟悉语言,完成一个明确目标的任务是最快学习一种技术的手段,单纯的看语言或者框架的start文档效率较低,带着问题写代码是最高效的。

toy项目最蛋疼的就是产生基础数据,也就是物料,自己api创建假数据并不好看也不实用,数据自动产生的话最简单的方法就是写个爬虫抓别人页面。学习的角度来看不用起定时任务,主动实时抓取即可。

那么做什么事儿呢?

有时候会有这样一种场景,当你想做一个xx号的时候,新账号没有创作资源、没有流量,有时候为了混脸熟会做一个搬运别人资源的事情,也就是抄。抄袭从来都是不可取的,但是有时候确实是需要做这些事情。

假定现在要做一个垂直的个人微信鸡汤号(非公众号),每天最少发五篇文章,领域选定后如果自己写不出来,每天也要搬运同行内容,并且搬运过来的文章上面可以加上跟自己业务内容相关的一些引流手段,例如文章头部底部添加自己的淘宝店、手机号等等。

未命名文件.png

那么任务拆解

  • 抓取微信公众号文章到自己服务器,替换微信图片做第一步的清洗。这是因为你直接把微信文章仍在自己服务器让别人打开的时候,微信图片发现如果域名不对会显示本图片来自微信云云,所以需要洗一遍。
  • 写个编辑器,将清洗的文章自己在洗一遍(可选)。例如文章内本身就带了原作者的一些推广图片、文章想要删掉。
  • 写个简单的CMS,可以管理抓取的文章上下架,单篇文章编辑,分享的时候可以选择分享的头图,分享的一句话。
  • CMS简单的用户系统和权限系统。

确定技术选型

  • 文章抓取、一次清洗入库用 python + django 提供一个实时接口的服务,一是因为python最适合干这件事,二是本身我想关注的是java写API,java语法的大概的熟练程度停留在六年前上学图书馆水平,基本已经全还给图书馆了,这个模块用java写太过于浪费时间。
  • 数据库 mysql,没什么聊的。
  • cdn 七牛,随便选一家有免费空间相对较长免费流量的cdn做开发。
  • java框架 dropwizard, 选择这个很简单,当你想学一个技术的时候,github搜索awesome-xxx。awesome-java 的restful api framework第一个就是他。
  • jdk 8.0,随便选的。
  • gradle java构建工具,大概看了下awesome java,maven还需要写xml,gradle不用而且包管理可以用maven。

代码

  • Pirate - 通过接口实时爬取微信文章的python服务 pirate
  • Parrot - Java RestFul API parrot
  • Potato - 前端项目。待定,并不是本次学习重点。

未命名文件 (1).png

接下来

首先实现 Extracter 拿到基础物料。


D咄咄
1.7k 声望257 粉丝

Life is to short, please use python.