OpenAPI 之 开源软件信息预览 ProjectTips

功能说明

    鼠标悬停在文章中用strong标签包裹的开源软件名上时,显示该软件的基本信息,让读者更好的理解提到的技术,降低文章的阅读难度。

演示

    点击去 RunJS 查看演示

    尝试把鼠标停留在 Hadoop 或者 Python 等黑体字上(此示例仅为demo,可用性有待提高)

如何实现

    (1) 主要涉及到两个API:搜索接口 search_list 和 软件详情接口 project_detail

    (2) 使用 JSONP 的数据接口,能够跨域获取数据,根据搜索接口搜索到相关软件列表

    search_list 请求解析:

http://www.oschina.net/action/openapi/search_list 参数说明
?dataType=jsonp 返回数据方式为 JSONP
catalog=project 搜索分类为软件
&callback=callback_method JSONP 回调函数
&client_id={client_id} 应用管理 应用列表中的 应用ID,见 OAuth2 认证基本流程的
&q=hadoop 搜索关键词

    返回结果:

{"searchlist":[
    {"id":19798,"title":"","type":"project","url":"http://www.oschina.net/p/spring-hadoop"},
    {"id":1051,"title":"分布式系统基础架构 Hadoop","type":"project","url":"http://www.oschina.net/p/hadoop"},
    {"id":24403,"title":"Python 的 Hadoop 扩展 Hadoopy","type":"project","url":"http://www.oschina.net/p/hadoopy"},
    {"id":25713,"title":"淘宝Hadoop作业平台 宙斯Zeus","type":"project","url":"http://www.oschina.net/p/alibaba-zeus"},
    ... // MORE
}

    (3) 通过相似性算法列出与 列表中 url 包含的唯一标识相似度最高的的软件

    (4) 如匹配到相似度 ≥0.8 的软件,使用 project_detail 接口请求对应软件

    project_detail 请求解析:

http://www.oschina.net/action/openapi/project_detail 参数说明
?dataType=jsonp 返回数据方式为 JSONP
&callback=callback_method JSONP 回调函数
&client_id={client_id} 应用管理 应用列表中的 应用ID,见OAuth2 认证基本流程的
&ident=hadoop 软件标识

    返回结果:

{
    "id":1051,
    "languages":"Java",
    "title":"Hadoop",
    "extensionTitle":"分布式系统基础架构",
    "body":"Hadoop 是一个分布式系统基础架构......",
    "url":"http://www.oschina.net/p/hadoop",
    "logo":"http://www.oschina.net/img/logo/hadoop.png",
    "document":"http://www.oschina.net/action/project/go?id=1051&p=doc",
    "homepage":"http://www.oschina.net/action/project/go?id=1051&p=home",
    "download":"http://www.oschina.net/action/project/go?id=1051&p=download",
    "recordtime":"2009-11-22 12:23:11",
    "os":"跨平台",
    "favorite":0,
    "license":"Apache"
}

    (5) 将软件信息缓存,并把详情显示出来

    (6) 源码:http://www.oschina.net/js/2013/projectTips.js

你可能感兴趣的:(JavaScript,博客,oschina,openapi)