Java开发者结合Node.js编程入门教程(3)
在我们的项目中,我们想要加载所有名称为Pabst的啤酒列表。如果你不熟悉啤酒行业,你可以试下Pabst Brewing公司生产的美式淡啤。这些啤酒上面带有蓝绶带和柯尔特{敏感词}图案,他们包含所有的麦芽糖饮料种类。
首先你需要下载一个json文件,里面包含需要返回的所有数据。你可以用下面的URL来实现这点:
https://dl.dropboxusercontent.com/u/72466829/beers.json
下载结束后,使用mongoimport命令把它导入到数据库中,命令如下:
$ mongoimport --jsonArray -d yourDBName -c beers --type json --file /tmp/beers.json -h yourMongoHost --port yourMongoPort -u yourMongoUsername -p yourMongoPassword
你可以看到如下结果:
connected to: 127.0.0.1:27017 Tue Jun 10 20:09:55.436 check 9 24 Tue Jun 10 20:09:55.437 imported 24 objects
第5步: 创建Beer模型对象
我们已经创建了一个数据库连接类并且已经把啤酒信息载入到MongoDB数据库里了,是时候创建一个模型对象来控制我们的啤酒信息了。创建一个新文件,名为Beer.java并把它放到/src/main/java/com/strongloop/data目录下。创建好该文件后,在其中添加如下代码:
package com.strongloop.data; public class Beer { private String id; private String name; private String description; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
注意: 提供好的JSON文件中包含了更多我们将会使用到的信息,所以可以找出来看看,并向其中添加一些额外的功能来拓宽你的学习经验。
第6步: 创建REST服务
猜猜看该干什么了?不错,我们终于准备好要创建基于REST的web服务了,它使我们可以获取到上一个步骤当中载入进来的啤酒信息。为此,我们需要创建一个新的名为BeerWS.java的文件,并把它放到/src/main/java/com/strongloop/webservice目录下。创建好之后,添加下列代码:
package com.strongloop.webservice; import java.util.ArrayList; import java.util.List; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import com.strongloop.data.DBConnection; import com.strongloop.data.Beer; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; @RequestScoped @Path("/beers") public class BeerWS { @Inject private DBConnection dbConnection; private DBCollection getBeerCollection() { DB db = dbConnection.getDB(); DBCollection beerCollection = db.getCollection("beers"); return beerCollection; } private Beer populateBeerInformation(DBObject dataValue) { Beer theBeer = new Beer(); theBeer.setName(dataValue.get("name")); theBeer.setDescription(dataValue.get("name")); theBeer.setId(dataValue.get("_id").toString()); return theBeer; } // 获取所有啤酒 @GET() @Produces("application/json") public List<Beer> getAllBeers() { ArrayList<Beer> allBeersList = new ArrayList<Beer>(); DBCollection beers = this.getBeerCollection(); DBCursor cursor = beers.find(); try { while (cursor.hasNext()) { allBeersList.add(this.populateBeerInformation(cursor.next())); } } finally { cursor.close(); } return allBeersList; } }
第7步: 浏览着啤酒信息傻乐
喔,搞定。我们已经写好了一个REST服务,可以从数据库中获取所有的啤酒信息。现在把你的代码部署到你的应用服务器吧, 在浏览器中打开下列地址看看它是否工作正常:
http://yourserverlocation/ws/beers
如果所有东西都正常,你将会看到所有的啤酒信息列表,如下图所示:
创建 Node 应用
如果你按照上面的步骤使用java进行编程,你会意识到使用javaEE创建应用尽管进展很快,但是创建一个类似REST服务的简单应用还是很麻烦。不要误解,我仍然很喜欢用javaEE,但是发现对于很多场景,比如创建返回json数据的REST服务,Node更适用。接下来,我们将要使用StrongLoop的LoopBack API创建一个简单的web服务。另外,我会向你展示如何在苹果OSX系统上安装Node。
步骤1:安装 Node
- 上一篇:Java数组操作的10大方法
- 下一篇:Java List双击事件实现方法