创建API背后的理论/魔力


Theory/Magic behind creating API

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

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

1) 既然没有一个健壮的/相同的模式来通过抓取获取各种数据,那么实际输出xml的最佳方式是什么?
我的意思是PHP文件会有很多行,从代码的不同点提取数据,文件会有很多行。它是一个好主意,键入代码输出结果在那里?

2) 是否有一种方法将抓取代码组织在一类中?
我想不出一种方法,将工作除了线性方法,甚至不创建一个函数,你只是应用函数(一般)。

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

4) 如果我在XML和JSON中提供API,是否有一种方法可以从一个结果移植到另一个结果,或者我必须手动创建JSON或XML中的字段并将内容放在那里?

我可能有更多的问题,可能会出现在这些已经回答了,但我希望我得到一切澄清。此外,这是假设结果不是从DB中获取的,因此必须在每次请求时抓取/制表数据。(尽管缓存稍后会实现)

谢谢

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

无意冒犯,但是一个开发API的新手程序员就像一个医学院一年级的学生提供免费的心脏移植手术。我理解您相信自己可以编程,但如果您打算发布可公开访问的代码,您可能需要更多的经验。否则像我这样的人会把它弄得一团糟,然后提交bug报告,嘲笑你的代码。

也就是说,如果你想要好的API设计理论,你可能应该看看Head First面向对象的分析和设计。你需要关注这些关键概念

  1. 程序到接口,而不是实现
  2. 封装变化

…并遵循其他好的设计原则。

…坦白说,良好的界面和良好的系统设计需要涵盖很多内容。您可以将此作为学习练习,但要让人们知道他们不应该依赖您的代码。虽然他们应该知道屏幕抓取比web服务API请求更脆弱和不稳定,但很多人都不知道。

也就是说,提供一些初步指导:

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