草庐IT

Python Flask 请求GET、 POST 、PUT、 DELETE

U盘失踪了 2024-01-09 原文

1,示例一个简单的请求

from flask import Flask  # 导入Flask类

app = Flask(__name__)  # 实例化flask

@app.route('/HelloWorld')  # 使用路由,给 hello 函数定义一个路由,然后游览器通过http,访问路径,请求页面返回的页面数据
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

 http://127.0.0.1:5000/HelloWorld

2,get 传参的方法一

请求指定页面的路径地址,返回页面的数据

from flask import Flask, request

app = Flask(__name__)

@app.route('/get')
def testGet():
    data = request.args.get('data')

    print('获取的data值:',data)
    return "获取的data值:" + data

if __name__ == '__main__':
    app.run()

 http://127.0.0.1:5000/get?data=test

3,get 传参的方法二

from flask import Flask, request

app = Flask(__name__)


@app.route("/get/<int:id>")
def testGetPath(id):
    print(type(id))
    return f"返回的数据 {id}"


if __name__ == '__main__':
    app.run()

 http://127.0.0.1:5000/get/123

4,POST form表单提交内容

向指定资源提交数据进行处理请求(例如:from提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

from flask import Flask, request

app = Flask(__name__)


# post form-data
@app.route("/post/form", methods=["POST"])
def testPostForm():
    username = request.form.get("username")
    password = request.form.get("password")
    print(username, password)
    data = {
        "username": username,
        "password": password
    }
    return data


if __name__ == '__main__':
    app.run()

 form-data 表单

 5,POST json

from flask import Flask, request, jsonify

app = Flask(__name__)

class Student():

    def __init__(self, id, name, age):
        self.id = id
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Student[id={self.id},name={self.name},age={self.age}]"


@app.route("/post/json", methods=["POST"])
def testPostJson():
    id = request.json.get("id")
    name = request.json.get("name")
    age = request.json.get("age")
    data = Student(id, name, age)
    print(data)
    return '200'


if __name__ == '__main__':
    app.run()

 http://127.0.0.1:5000/post/json

 6,PUT 传参的方法一

从客户端向服务器传送的数据取代指定的文档的内容。

from flask import Flask, request

app = Flask(__name__)


@app.route("/api/put/<int:id>", methods=["PUT"])
def testPut(id):
    print(type(id))
    return f"上传参数 {id}"

if __name__ == '__main__':
    app.run()

 http://127.0.0.1:5000/api/put/12

 

7,PUT 传参的方法二

from flask import Flask, request

app = Flask(__name__)


@app.route("/api/put", methods=["PUT"])
def testPut():
    data = request.args.get('data')
    print(type(data))
    return f"上传参数 {data}"


if __name__ == '__main__':
    app.run()

http://127.0.0.1:5000/api/put?data=test

 

 

8,PUT json

from flask import Flask, request, jsonify

app = Flask(__name__)

class Student():

    def __init__(self, id, name, age):
        self.id = id
        self.name = name
        self.age = age


    def __repr__(self):
        return f"Student[id={self.id},name={self.name},age={self.age}]"

@app.route("/api/put/json", methods=["PUT"])
def testPutJson():
    id = request.json.get("id")
    name = request.json.get("name")
    age = request.json.get("age")
    stu = Student(id, name, age)
    print(stu)
    return "200"

if __name__ == '__main__':
    app.run()

http://127.0.0.1:5000/api/put/json

 

9,DELETE

请求服务器删除指定的页面。

from flask import Flask, request, jsonify

app = Flask(__name__)


@app.route('/api/delete', methods=["DELETE"])  # 方式1
def testDelete():
    data = request.args.get('name')
    print(data)
    return data + "删除成功"


@app.route("/api/delete/<int:ID>", methods=["DELETE"])  # 方式2
def testGetPath(ID):
    print(type(ID))
    return f"测试值为 {ID}"


if __name__ == '__main__':
    app.run()

 http://127.0.0.1:5000/api/delete?name=123

 http://127.0.0.1:5000/api/delete/123

 

有关Python Flask 请求GET、 POST 、PUT、 DELETE的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  3. ruby-on-rails - rails : How to make a form post to another controller action - 2

    我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak

  4. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  5. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

    我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

  6. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  7. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  8. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  9. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  10. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

随机推荐