【问题标题】:Getting Started with RESTful HTTP API开始使用 RESTful HTTP API
【发布时间】:2011-07-29 23:37:07
【问题描述】:

我在一家 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 语言编写任何我能写的东西,因为这将是进入应用程序代码的最简单方法。但是,如果人们推荐另一种语言,如果有明确的专业人士,我很乐意使用。

【问题讨论】:

  • 什么编程语言?选择(至少)一个。就目前而言,这个问题过于宽泛和开放。
  • 谢谢。肯定想用 C 写代码。

标签: api http rest cgi


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    首先,您必须弄清楚您的网络服务器将是什么,这可能取决于您选择的操作系统。 Windows 还是 Linux?还是别的什么?

    如果您使用的是 Windows,您可能会使用 ASP.NET 或 WCF 之类的东西;其中有很好的 REST 支持,您可以轻松找到一些好的文档。不过,这可能需要使用托管语言来实现,因此请期待一些学习曲线。

    如果您使用 Linux 作为您的网络服务器,您可能希望使用 Apache 作为您的网络服务器软件,这意味着服务器软件有许多不同的可能性; PHP、Python 等。您可能很容易从这些语言中调用 C,尽管可能有比从那里调用 C 更简单的方法来做您想做的事情。当然,Linux 作为网络服务器为您提供了更多的服务器软件选项;你总是可以使用 node.js 和 Express 作为你的 REST API;要想把它做好需要一些学习,但是对于极快的速度,很难击败 node.js。

    【讨论】:

      【解决方案3】:

      startstop 不是资源而是操作,不属于 URL。 相反,您应该使用PUTPATCH 将诸如stream=truestream=false 之类的布尔值发送到诸如http://[ipaddr]/video 之类的URL(也不需要/api/)

      客户端发送新状态,相机做出反应。一旦状态发生变化(视频开始或停止),它会以 200 响应,响应正文中包含新状态,或者 204 没有响应正文。或者如果操作很长,您可以回复 202 Accepted 并且没有响应正文。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 2017-06-19
        • 2011-04-07
        • 2021-01-22
        • 2020-06-30
        • 2010-09-12
        相关资源
        最近更新 更多