【问题标题】:Is my API a REST architekture?我的 API 是 REST 架构吗?
【发布时间】:2015-04-14 09:07:44
【问题描述】:

我目前正在使用 Flask 在 Python 中设计一个 Web 服务。我现在很困惑它是一个 RESTful 服务还是一个普通的 web 服务。我一直在阅读很多关于 RESTful 服务的资料,但我仍然不能说我的服务是否是 REST 架构。 对我的 API 的请求是无状态的。

这是我所拥有的:

from flask import Flask,request
if __name__ == "__main__":
    appLogger.info("RestFul service initialized and started")
    app.run(host="0.0.0.0",port=int("80"),debug=True)

@app.route('/',methods = ['POST'])
def add():
    """
    This function is mapped to the POST request of the REST interface
    """
    #check if a JSON object is declared in the header
    if request.headers['Content-Type'] == 'application/json; charset=UTF-8' and request.data:
            try:
                data = json.dumps(request.json)
            #check if recieved JSON object is valid according to the scheme
            #if (validateJSON(data)):
                try:
                    saveToMongo(data)
                    appLogger.info("Record saved to MongoDB")
                    return "JSON Message saved in MongoDB"
                except:
                    appLogger.error("Could not write to MongoDB")
            except:
                appLogger.error("Recieved invalid JSON")
    else:
        appLogger.error("Content-Type not defined or empty content")
    raise FailedRequest

如果没有可能的响应,我将返回一个 json,它实际上是请求的有效负载。它始终是带有客户文本作为结果描述的常规 http 响应。 对吗,因为这个事实,它不是一个 RESTful 服务,如果我想称它为 RESTful 服务,我需要返回一个 json 对象吗?还是我完全错了?我的 API 只是一个简单的 RPC 吗?

【问题讨论】:

    标签: python json web-services rest


    【解决方案1】:

    我只看到一个资源/ 可以向其发出POST 请求。没有办法GET以这种方式保存的对象集合或单个对象。

    有人可能会争辩说,这样一个微不足道的系统并不违反任何 REST 原则。但我认为这还不足以调用一个系统 RESTful。这是一个简单的 RPC 系统,只有一个匿名的“保存”方法。

    【讨论】:

    • 未来,将会有另一个 GET 请求,它将有一个 json 对象作为请求和响应的负载。但我还不能说,响应数据是生成还是取自现有集合。这对 REST 架构重要吗?可以生成响应数据还是 RCP?
    • 带有正文的 GET 请求?为什么? URL 会是什么样子?身体是什么意思?
    • 响应体(返回值)是请求中有趣的部分,取决于请求体(参数)。这就是为什么我认为这应该是一个 GET 请求。我想我应该让它成为一个 POST 请求,因为该请求已经包含一个正文?我认为这肯定是一个 RPC,对吧?
    • 是的,那是 RPC,不是 REST。
    • 谢谢你,我想这改变了一个开关 :)
    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2019-06-06
    • 2021-12-07
    • 1970-01-01
    相关资源
    最近更新 更多