RESTful HTTP API入门

时间:2011-07-29 23:37:08

标签: api http rest cgi

我在IP摄像机公司工作,目前我们有一个过时的CGI HTTP API接口。 CGI用C实现。

我想学习并实现一个新的HTTP RESTful API,以便可以执行以下类型的事情:

http://[ipaddr]/api/video/start
http://[ipaddr]/api/video/stop

我想在业余时间从头开始编写这个RESTful API,这样我就可以学习这项新技能。

我在嵌入式C编程和Web技术前端(HTML,JS,CSS等)方面非常有经验,但是,我想实现前端Web UX和应用程序代码(和/或Web)之间的链接后端)。

我想了解当前实现HTTP API的方法。我真的很想在开始之前学习“正确的方法”。

我发现我所看到的所有内容,如OAuth,XAuth,REST,SOAP,实现语言都有点压倒性!

Stack Overflow上是否有人可以提供合理的途径来学习这些东西?我非常擅长自学,但可以在正确的方向上做一些指示。

我想在C语言中尽我所能,因为这是进入应用程序代码的最简单方法。但是,如果人们推荐另一种语言,我很高兴,如果有明确的专业人士那么。

3 个答案:

答案 0 :(得分:0)

首先,您必须弄清楚您的网络服务器将会是什么,这可能是您选择的操作系统所驱动的。 Windows还是Linux?或其他什么?

如果你使用的是Windows,你可能会使用像ASP.NET或WCF这样的东西;那些有很好的REST支持,你可以很容易地找到一些好的文档。这可能需要在托管语言中实现,所以期待从中获得一些学习曲线。

如果您使用Linux作为您的网络服务器,您可能希望使用Apache作为您的网络服务器软件,这意味着服务器软件可能有多种不同的可能性; PHP,Python等您可以轻松地从这些语言中调用C,尽管可能更容易实现您想要的方法,而不是从那里调用C语言。当然,Linux作为Web服务器为您提供了服务器软件的附加选项;你可以随时使用node.js和Express作为你的REST API;为了做到这一点,我们需要做一些学习,但是对于极快的速度,很难击败node.js。

答案 1 :(得分:0)

获取Richardson和Ruby的RESTful Web服务(O'Reilly)的副本。他们讨论了如何使用几种不同的技术设计和实现RESTful服务。它非常好,除了RFC-2616(HTTP 1.1)和Roy Fielding关于REST的原始论文之外几乎不需要任何其他东西。

有许多优秀的库可供构建(取决于您希望直接学习多少)。在Java世界中,Apache HTTP Client库是一个很好的基础层。像RESTlet这样的REST框架可以自动完成剩下的大部分工作,使其相对简单。

答案 2 :(得分:0)

startstop不是资源,而是操作,不属于URL。 相反,您应该使用PUTPATCHstream=truestream=false等布尔值发送到http:// [ipaddr] / video等网址(不需要/ api /其中)

客户端发送新状态,摄像头做出反应。一旦状态发生变化(视频开始或停止),它将响应200,响应体中的新状态,或204没有响应体。或者,如果操作很长,您可以使用202 Accepted响应并且没有响应正文。

同样可用于启动和停止/音频流。

有关详情,请参阅http://weblogs.java.net/blog/mkarg/archive/2010/02/14/what-hateoas-actually-means