PythonWeb - #001 使用Flask实现基本HTTP谓词操作

使用Flask实现基本HTTP谓词操作

1 目标

使用Flask实现基本HTTP谓词操作。

HTTP 谓词功能用途示例
GET获取资源从服务器检索数据,不会对服务器上的数据产生任何影响获取所有项目:GET /items 获取指定ID的项目:GET /items/1
POST创建资源向服务器发送数据,并在服务器上创建新的资源添加新项目:POST /items 请求体:{ “name”: “New Item”, “description”: “New Description” }
PUT更新资源(替换整个资源)替换服务器上的现有资源更新项目:PUT /items/1 请求体:{ “name”: “Updated Item”, “description”: “Updated Description” }
PATCH更新资源(部分更新资源)更新服务器上的现有资源的部分内容部分更新项目:PATCH /items/1 请求体:{ “description”: “Partially Updated Description” }
DELETE删除资源从服务器上删除指定资源删除项目:DELETE /items/1

2 代码

from flask import Flask, request, jsonify

app = Flask(__name__)
port = 3000

# 示例数据
items = [
    { "id": 1, "name": "Item 1", "description": "Description 1" },
    { "id": 2, "name": "Item 2", "description": "Description 2" },
]

# GET 请求:获取所有项目
@app.route('/items', methods=['GET'])
def get_items():
    return jsonify(items)

# GET 请求:根据ID获取项目
@app.route('/items/<int:id>', methods=['GET'])
def get_item(id):
    item = next((i for i in items if i['id'] == id), None)
    if item is None:
        return 'Item not found', 404
    return jsonify(item)

# POST 请求:添加新项目
@app.route('/items', methods=['POST'])
def add_item():
    new_item = {
        "id": len(items) + 1,
        "name": request.json.get('name'),
        "description": request.json.get('description'),
    }
    items.append(new_item)
    return jsonify(new_item), 201

# PUT 请求:更新项目(替换整个项目)
@app.route('/items/<int:id>', methods=['PUT'])
def update_item(id):
    item_index = next((index for index, item in enumerate(items) if item['id'] == id), -1)
    if item_index == -1:
        return 'Item not found', 404

    updated_item = {
        "id": id, # 保留原有ID
        "name": request.json.get('name'),
        "description": request.json.get('description'),
    }
    items[item_index] = updated_item
    return jsonify(updated_item)

# PATCH 请求:部分更新项目
@app.route('/items/<int:id>', methods=['PATCH'])
def patch_item(id):
    item = next((i for i in items if i['id'] == id), None)
    if item is None:
        return 'Item not found', 404

    if 'name' in request.json:
        item['name'] = request.json['name']
    if 'description' in request.json:
        item['description'] = request.json['description']
    return jsonify(item)

# DELETE 请求:删除项目
@app.route('/items/<int:id>', methods=['DELETE'])
def delete_item(id):
    item_index = next((index for index, item in enumerate(items) if item['id'] == id), -1)
    if item_index == -1:
        return 'Item not found', 404

    deleted_item = items.pop(item_index)
    return jsonify(deleted_item)

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满天飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值