【问题标题】:What does it mean for an application or library or framework to be RESTful? [duplicate]应用程序、库或框架是 RESTful 意味着什么? [复制]
【发布时间】:2014-03-15 23:01:59
【问题描述】:

我一直在尝试理解应用程序、库或框架是 RESTful 意味着什么?例如,为什么说瓶子或烧瓶是 RESTful 而 cgi + wsgiref 不是?

您能否用一个最小的代码示例来描述一个 RESTful 应用程序?

【问题讨论】:

  • 链接的问题解释了什么是 REST,但作为一个想要编写 RESTful 应用程序的程序员,我想我不知道从哪里开始。
  • 你的技术栈是什么?
  • @cirrus Linux、Nginx、uwsgi、Python 3、bottle.py

标签: rest


【解决方案1】:

您要求“构建一个 RESTful 应用程序”表明您的困惑。 REST 是一种将应用程序建模接口作为网络上(通常是HTTP)资源的集合的方法,这些资源以预期的方式响应标准的网络动词(例如,GET读取,DELETE 销毁,PUT 更新)。更重要的是,在高质量的 RESTful 界面中,资源以描述性方式相互链接;客户端永远不需要发明任何资源的名称,因为它可以跟随链接(或记住它之前看到的 URL;这也是合法的)。内容协商也是A-OK;让客户端说出首选的资源表示格式,如果可以,让服务器提供。

如果应用程序可以充当(或在其中)Web 服务器,同时看到有关请求的足够信息(特别是方法、路径和其他标头),那么它可以使用这些信息来呈现 RESTful 接口。它拥有它真正需要的一切。一些库堆栈通过为各种约定提供更多支持而使其比其他库堆栈更容易,但这只是您需要自己完成多少工作而不是利用其他人的工作的问题。

【讨论】:

  • 这开始是一条评论,但太长了……
【解决方案2】:

REST 是一种架构设计模式;你可以阅读更多关于杂项细节at wikipedia

这个想法是在HTTP动词后面附加意义(GETPOST是你可能熟悉的两个),以影响数据的变化。使用代表特定实体或实体组的 端点 (URL) 访问 API。

简而言之,它的应该是这样工作的:

  • GET 获取有关特定实体的信息。
  • POST创建关于特定实体的新记录
  • PUT 更新现有实体的信息。
  • DELETE 明显删除了一个实体的记录。

设计良好的应用程序使用 HTTP 响应代码(例如您已经习惯的 200 和 404)来指示针对端点的操作的结果。

有大量关于创建 RESTful API 和服务的材料,以及关于人们如何正确或错误地使用 REST 的健康辩论。我把这些研究留给你。

任何具有 HTTP 库的语言都可用于为现有数据公开 REST API,但有像 apigeemashery 这样的公司和像 Google Cloud Endpoints 这样的库可以为您处理这些琐碎的工作。

特别是对于 Python,有很多库。最受欢迎的之一是Django REST Framework,它与 一起使用。还有Flask-RESTful使用

还有this question 讨论了更多用于 Python 的 REST 框架。

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2020-09-24
    • 2013-06-05
    相关资源
    最近更新 更多