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