理论/魔术背后创建API

时间:2011-04-26 04:27:15

标签: php api

我是一名新手PHP程序员,我有一些关于创建基于REST的API服务的问题。

基本上,它将成为一个github开源项目,它将从Web上抓取各种数据并将其作为XML的API提供。现在我的问题就是我应该怎么做或者如何做到这一点。

1)由于通过抓取获取各种数据没有强大/相同的模式,实际输出xml的最佳方法是什么?
我的意思是PHP文件将有各种行从代码中的各个点提取数据,文件将是很多行。输入代码以输出结果是不是一个好主意?

2)有没有办法在某种类中组织抓取代码?
我想不出一种除了线性方法之外还能工作的方法,即使是创建了一个函数也只是应用函数(通常)。

3)如果有办法做到这一点^^,你怎么能输出它?
除了使用另一个文件并从主文件获取内容并通过辅助文件显示代码之外,还有其他方法。

4)如果我要用XML和JSON提供API,有没有办法从一个结果移植到另一个结果,或者我必须手动创建json或xml中的字段并将内容放在那里吗

在回答这些问题后,我可能会有更多问题,但我希望我能清理一切。此外,这是假设不从DB获取结果,因此必须在每个请求上刮取/制表数据。 (即使缓存将在稍后实施)

由于

1 个答案:

答案 0 :(得分:3)

这个问题可能更适合https://codereview.stackexchange.com/

不要太粗鲁,但是一个新手程序员开发API就像是一年级的中学生,提供免费的心脏直视移植。我知道您相信您可以编程,但如果您打算发布可公开访问的代码,您可能需要更多经验。否则像我这样的人会破坏它并提交错误报告来嘲笑你的代码。

也就是说,如果你想要良好的API设计理论,你应该查看Head First Object Oriented Analysis and Design。您需要关注这些关键概念

  1. 编程到接口,而不是实现
  2. 封装变化的内容
  3. ...并关注其他good design principles

    ...老实说,良好的界面和良好的系统设计有很多内容。您可以将其用作学习练习,但让人们知道他们不应该依赖您的代码。虽然他们应该知道屏幕抓取比Web服务API请求更脆弱和不稳定,但很多人没有。

    那说,提供一些初步指导:

    1. 是的,使用OOP。在一个类中封装实际进行抓取的部分(可能是使用cURL)。这将允许您透明地将刮擦引擎切换到最终用户。将您的输出封装在类中,这将允许轻松扩展(即,如果JSON输出在单一责任类中,而XML输出在另一个中,我可以通过创建新类而不破坏旧代码轻松添加RSS输出)
    2. 考虑您的代码必须遵守的合同。这将驱动界面。如果你正在抓取特定类型的数据(比如某一天的体育比分),那些应该推动可用的操作类型(即函数getSportsScoresForDate(date toGet))
    3. 从顶层接口的最抽象/一般操作开始,然后使用扩展该接口的其他接口。这允许用户拥有不同粒度级别的接口(即,类SensorDataInterface有一个方法getData()。HeartRateMonitorInterface扩展了SensorDataInterface并添加了getDataForTimeInterval())