用Flickr API扩展Project Zero和WebSphere sMash的脚本平台

开放 Flickr API 让您可以将元素整合到 Project Zero 应用程序中

Flickr 照片共享服务是当今最流行的 Web 应用程序之一。它提供了具备优秀社会性网络的健壮托管服务,让上载、组织和寻找照片变得异常简单。这一切都很棒,但从一个开发者的角度来看,Flickr 最让人着迷的部分是其用来读写照片数据的公共 API。您可以借助任何编程语言通过 HTTP 发送 API 请求,而且现在也有很多开源项目涌现出来,可以针对各种语言封装此 API 。在本文中,您将了解如何通过提供可在 Project Zero 应用程序中轻松重用的 Groovy 绑定来 “Zero 化” Flickr API。学完本文后,只需几行代码即可从 Groovy 脚本读写照片数据。

开始之前

本文假设您已经下载了 Project Zero 并或者已经完成了 介绍性教程 的学习或者自己编写过简单的应用程序。该概览包括了如何获得 Flickr API 键的指令,这些都是测试本文中所提供的代码所必需的。

简介

Flickr 照片共享服务是当今最为流行的 Web 应用程序之一,它包括了一个公共 API,让开发人员可使用 HTTP 请求访问照片数据。Flickr 的 API 是 RESTful 的而且十分容易理解,但若想进行请求和读取响应,还需要执行一些乏味的步骤。本文展示了如何去除这些乏味的步骤并让 Zero 和 Flickr 间的通信简单到只需几行代码。本文还探讨了 Project Zero 几个有趣的扩展点。

用 Groovy 封装 Flickr API

读写照片数据的 Flickr API 的基础是以 HTTP 发送的消息和以 XML 或 JSON 为格式的数据结构。本文使用的是 JSON,因为它的数据结构(简单映射和列表)更容易从 Groovy 的角度处理。在本节,将会介绍如何使用 Zero 的全局上下文和 Groovy 的脚本为 Flickr 的 API 创建一些简单的包装器方法。

创建示例项目

要完成我们的 Flickr API “Zero 化”处理,需要创建两个 Zero 项目:一个针对用来与 Flickr 交互的 Groovy 代码,一个使用这些 Groovy 代码完成某些任务。第一个项目名为 zero.services.flickr,第二个项目名为 flickr.test。如果想要亲自编写代码,则可以使用清单 1 所示的 Zero 命令行创建这两个简单的项目:

清单 1. 创建测试项目

$ zero create zero.services.flickr
$ zero create flickr.test

为 flickr.test 编辑 Ivy 文件并在 zero.services.flickr 上添加一个依赖项。打开 /config/ivy.xml 并添加如清单 2 所示的 XML 代码行:

清单 2. 添加 Ivy 依赖项

<dependency name="zero.services.flickr" org="zero" rev="1.0+"/>

zero.services.flickr 项目并不需要额外的库或依赖项,因为 Flickr API 构建在 HTTP 和 JSON 基础上;我们将使用 Zero Core 所包含的 HTTP 和 JSON 库与 Flickr 通信并创建到实际图像文件的 URL。

调用 Flickr API

每个 Flickr 请求都需要一个方法名和一组参数集(参数集也可能为空)。响应作为 JSON 对象返回,JSON 对象除了所请求的数据外还具有状态属性(设为 ok 或 fail)。您可以充分利用这样一个事实,即 JSON 对象在 Groovy 中表示为简单的映射和列表并创建一个十分简单的 API 来发送请求和读取响应。让我们开始一个用例:您可能想让您的用户能用三四行代码即可发出 Flickr 请求,如清单 3 所示:

清单 3. “Zero 化” 的 Flickr API 原型 #1

def method = "flickr.photosets.getPhotos";
def params = [
   photoset_id: 1234567890,
   per_page: 25
];
def response = invokeMethod("flickr.groovy", "flickr");

时间: 2024-11-03 02:16:45

用Flickr API扩展Project Zero和WebSphere sMash的脚本平台的相关文章

将Active Content Filtering用于Project Zero和WebSphere sMash应用程序的安

ACF 简介 作为 ACF 入门的一部分,您必须先理解什么是 Project Zero.如 下内容摘自 Project Zero Web 站点: "Project Zero 是 IBM 内部发起 的一个孵化器项目,侧重于下一代动态 Web 应用程序的敏捷开发.Project Zero 引入 了一种简单的环境,这种环境支持基于流行的 Web 技术创建.组装和执行应用程序. Project Zero 环境包括一个面向 Groovy 和 PHP 的脚本运行时,并且具有应用程序编 程接口,这些接口针对

我的Android进阶之旅------&amp;gt;解决Error:Unable to find method &#039;org.gradle.api.internal.project.ProjectInternal.g

错误描述 今天在Github上面下载了一份代码,然后导入到Android Studio中直接报了如下图所示的错误: 错误描述如下: Error: Unable to find method 'org.gradle.api.internal.project.ProjectInternal.getPluginManager()Lorg/gradle/api/internal/plugins/PluginManagerInternal;'. Possible causes for this unexp

WebSphere sMash的创新应用,第2部分:借助包装外部系统管理工具,通过云来实

WebSphere sMash的创新应用,第2部分:借助包装外部系统管理工具,通过云来实现企业操作自动化 本系列文章描述了有关 IBM WebSphere sMash 的真实例子,在该例子中 IBM WebSphere sMash 被选择用于执行创新和有价值的任务,来辅助位于美国 CT Southbury 的 IBM's Green Innovation Data Center(GIDC)的运行.第 1 部分 关注如何利用 WebSphere sMash 为构造数据中心指示板构建灵活的架构.在本

WebSphere sMash的创新型使用,第1部分:构建灵活实用的仪表板框架

当新技术出现时,尤其是编程语言和模型出现时,通常都会有这样一个时期,即会出现很多有助于开发人员开发工作的 how to 文章.随着时间的推移,这些指南会深入介绍更高级的概念,但是通常却不会介绍实际技术应用的实现细节.Hello World 是基础应用的典型示例,但是当您想要自己构建应用,则只有实际示例才能为下一个杀手级应用项目提供灵感. 本系列文章展示了 3 个实际示例,即如何选择 IBM WebSphere sMash,以及如何使用它执行创新型和有价值的任务.这些示例都与 IBM 在美国康乃狄

在WebSphere sMash中集成Java和PHP

引言 本文说明如何使用 Java Bridge 从 PHP 访问 Java 类.其中将讨论如何调用 Java 方法和访问字段(实例和静态字段).另外还将讨论异常处理及 PHP 和 Java 之间的类型转换. ZSL.WebSphere sMash 和 Apache Lucene 有关真实示例,本文逐步说明了使用 PHP 编写的简单搜索引擎的创建工作,此引擎可使用 Apache Lucene 建立文件索引和进行搜索.Apache Lucene 是一个高性能的全功能文本搜索引擎库,完全使用 Java

面向企业的云计算:第2部分:Amazon EC2 公共云上的 WebSphere sMash 和 DB2 Express-C

本系列文章的第1部分讨论了云计算的基本方面,包括云的层和不同的云类型及其优缺点,并解释了为何了解云对企业开发人员很重要.本文主要考察公共云,以及如何使用 IBM® WebSphere® sMash 和 IBM DB2® Express-C Amazon Machine Images (AMI) 交付宿主在 EC2 公共云基础设施上的 Web 应用程序. 简介 在 3 种类型的云中 -- 公共云.私有云和混合云 -- 公共云提供的产品是最出色.最成熟的.可访问性和廉价性是导致公共云日趋流行的两个关

在WebSphere sMash中使用Dojo开发Ajax的Web应用程序

开始之前 本文假设您已经下载了 WebSphere sMash 并且完成了简明教程的学习,或者曾经写过简单的应用程序.您应该熟悉 Ajax 的基本原理和 Dojo 的相关使用方式. 你还需要具备以下先决条件来完成本文的示例应用程序: JDK 5.0 或更高版本. WebSphere sMash 1.0.0.4 或更高版本的命令行环境. 通畅的网络连接来连接 SMTP 邮件服务器. Firefox 3.0 用于启动 AppBuilder AppBuilder 现在是 WebSphere sMash

谷歌扩展 js-求助:谷歌扩展 如何使插入页面的内容脚本里面数据在刷新之后不丢失

问题描述 求助:谷歌扩展 如何使插入页面的内容脚本里面数据在刷新之后不丢失 学了几天js,自己编了一个扩展,有个内容脚本,每次刷新页面的时候都会重新插入,导致一些赋值的数据丢失.请问怎么解决? ps:也不知道问的地方对不对 第一次提问好紧张啊 怎么才能装作经常发帖的样子呢 解决方案 可以把这些数据存到chrome的数据库中,这样下次加载的时候读取.

浏览器扩展系列————给MSTHML添加内置脚本对象【包括自定义事件】

原文:浏览器扩展系列----给MSTHML添加内置脚本对象[包括自定义事件] 使用场合:          在程序中使用WebBrowser或相关的控件如:axWebBrowser等.打开本地的html文件时,可以在html的脚本中使用自己在.net中定义的类,实现与Internet Explorer server的互操作.此外也可以在充分利用html在设计界面方面高效,简单的同时,也可以实现一些复杂的特性. 实现: Codepublic class ScriptEvent     {