我在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语言中尽我所能,因为这是进入应用程序代码的最简单方法。但是,如果人们推荐另一种语言,我很高兴,如果有明确的专业人士那么。
答案 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)
start
和stop
不是资源,而是操作,不属于URL。
相反,您应该使用PUT
或PATCH
将stream=true
或stream=false
等布尔值发送到http:// [ipaddr] / video等网址(不需要/ api /其中)
客户端发送新状态,摄像头做出反应。一旦状态发生变化(视频开始或停止),它将响应200,响应体中的新状态,或204没有响应体。或者,如果操作很长,您可以使用202 Accepted响应并且没有响应正文。
同样可用于启动和停止/音频流。
有关详情,请参阅http://weblogs.java.net/blog/mkarg/archive/2010/02/14/what-hateoas-actually-means