Getting Started with RESTful HTTP API



我在一家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理想的,因为这将是进入应用程序代码的最简单的方法。但是,如果有人推荐另一种语言,如果有明确的优点,我很乐意接受。

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

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

首先,你必须弄清楚你的web服务器将是什么,这可能是由你选择的操作系统驱动的。Windows还是Linux?还是别的什么?

如果你使用的是Windows,你可能会使用类似ASP的东西。NET或WCF;它们都有很好的REST支持,您可以很容易地找到一些很好的文档。不过,这可能需要在托管语言中实现,因此预计会有一些学习曲线。

如果你使用Linux作为你的web服务器,你可能会想要使用Apache作为你的web服务器软件,这意味着服务器软件的任何数量不同的可能性;PHP, Python等。您可以很容易地从这些语言中调用C,尽管可能有比从这些语言中调用C更简单的方法来做您想做的事情。当然,作为网络服务器的Linux为服务器软件提供了额外的选择;你可以使用node.js和Express作为你的REST API;要做好它需要一些学习,但要达到惊人的速度,很难超越node.js。

startstop不是资源,而是动作,不属于URL。相反,你应该使用PUTPATCH发送一个布尔值,如stream=truestream=false到一个URL,如http://[ipaddr]/video(不需要/api/)

客户端发送新的状态,相机做出反应。一旦状态发生改变(视频开始或停止),它就会用响应体中包含新状态的200或没有响应体的204来响应。或者,如果操作很长,您可以使用202 Accepted(接受)响应而不包含响应正文。

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

更多信息请阅读http://weblogs.java.net/blog/mkarg/archive/2010/02/14/what-hateoas-actually-means

最新更新