REST(Representational State Transfer)API是一种用于分布式系统的软件架构风格。它依赖于无状态、客户端-服务器、可缓存的通信协议——通常是HTTP。在REST API中,资源是通过URI(Uniform Resource Identifier)来标识的,而对资源的操作(如创建、读取、更新、删除)则是通过HTTP方法(如GET、POST、PUT、DELETE)来实现的。
当涉及到传递参数时,有两种常见的方法:
?
开始,并用&
分隔。例如:https://example.com/api/resource?param1=value1¶m2=value2
。使用正文而不是查询字符串来获取参数的优势包括:
请求正文中的参数可以有多种格式,包括:
使用正文传递参数的场景包括:
解决方法:
json
库)来解析正文并获取参数。xml.etree.ElementTree
)。cgi
库或flask
框架的request.form
)。示例代码(Python + Flask):
from flask import Flask, request
app = Flask(__name__)
@app.route('/api/resource', methods=['POST'])
def create_resource():
data = request.get_json() # 获取JSON格式的正文
param1 = data['param1']
param2 = data['param2']
# 处理参数...
return {'message': 'Resource created successfully'}
if __name__ == '__main__':
app.run()
解决方法:
schema
库或marshmallow
库)来验证请求正文中的参数。示例代码(Python + Flask + marshmallow):
from flask import Flask, request
from marshmallow import Schema, fields
app = Flask(__name__)
class ResourceSchema(Schema):
param1 = fields.Str(required=True)
param2 = fields.Int(required=True)
@app.route('/api/resource', methods=['POST'])
def create_resource():
schema = ResourceSchema()
data = request.get_json()
errors = schema.validate(data)
if errors:
return {'message': 'Validation failed', 'errors': errors}, 400
# 处理参数...
return {'message': 'Resource created successfully'}
if __name__ == '__main__':
app.run()
领取专属 10元无门槛券
手把手带您无忧上云