GraphGists

显示 API 依赖关系的 Neo4j 图

引言

应用程序开发者依靠公共 API 使其代码正常工作。此模型旨在展示如何标记公共 API 更新对代码的影响。通过定义内部定制客户端代码与其所依赖的 API 方法之间的关系,您可以快速查看哪些 API 更改可能会影响现有代码。


示例数据已加载

// Create code clients
CREATE (Email:Client {id:'1', description:'email client', repo:'localgit:emailClient'})
CREATE (Text:Client {id:'2', description:'sms client', repo:'localgit:textClient'})
CREATE (Invoice:Client {id:'3', description:'produce invoice client', repo:'localgit:invoiceClient'})

// Create Public Api methods
CREATE (MailCh:Vendor {id:'11', name:'mailCh', apiDoc:'https://github.com/mailch/api'})
CREATE (Twil:Vendor {id:'12', name:'twil', apiDoc:'https://github.com/twil/api'})
CREATE (Invoiceapi:Vendor {id:'13', name:'mailCh', apiDoc:'https://github.com/Invoiceapi/api'})

// Create consumes relationship
CREATE (Email)-[:CONSUMES {method:'getServer', version:'1.7', status:'Changed'}]->(MailCh)
CREATE (Text)-[:CONSUMES {method:'getSmsCarrier', version:'3.2', status:'Removed'}]->(Twil)
CREATE (Email)-[:CONSUMES {method:'getEmailServer', version:'1.7', status:'Removed'}]->(MailCh)
CREATE (Invoice)-[:CONSUMES {method:'getInvoiceNumer', version:'2.3', status:'Same'}]->(Invoiceapi)

RETURN *

识别依赖关系

我们收集所有依赖关系

MATCH (client:Client)-[r:CONSUMES]->(vendor)
RETURN client.description AS `Client Description`, client.repo AS `Code Location`, r.method AS `API Method`, r.status AS `Details`
ORDER BY `Details` DESC

识别需要移除的变更

查找需要修改代码的 API 更改。您所依赖的 API 方法如果被移除,则需要您关注并修复。

MATCH (client:Client)-[r:CONSUMES]->(vendor)
WHERE r.status = "Removed"
RETURN client.description AS `Client Description`, client.repo AS `Code Location To Update`, r.method AS `API Method`, r.status AS `Details`, r.version AS `VERSION`
ORDER BY `Details` DESC

识别需要测试的变更

查找应标记为需要测试的 API 更改。现有方法中的更改可能导致隐蔽问题 -> 代码可能正常运行,但结果可能与之前不同。

MATCH (client:Client)-[r:CONSUMES]->(vendor)
WHERE r.status = "Changed"
RETURN client.description AS `Client Description`, client.repo AS `Code Location`, r.method AS `API Method`, r.status AS `Details`, r.version AS `VERSION`
ORDER BY `Details` DESC