RESTful HTTP API入门

问题描述 投票:3回答:3

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

api http rest cgi
3个回答
0
投票

startstop不是资源而是action,并且不属于URL。 相反,您应该使用PUTPATCH将一个布尔值(例如stream=truestream=false发送到类似http:// [ipaddr] / video的URL(不需要/ api /或者)

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

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

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


0
投票

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.