python - 在 Python 中使用 JSON 响应 http 请求
问题描述
我有几个从 CLI 使用的 Python 脚本。现在有人问我是否可以提供一个 Web API 来执行一些通常从 CLI 完成的工作。我想回复 JSON 格式的数据。我对 JSON 或 API 知之甚少。
如何从 http 请求中检索查询数据?
如何为我的脚本的响应创建 HTTP 标头?
给定以下 URL,我如何使用名为“Steve”的 JSON 回复进行响应?
http://myserver.com/api.py?query=who
我已经有一个运行正常的 Apache Web 服务器,可以提供 HTML 和 CGI 脚本。它只是对我需要一些帮助的 Python 脚本进行编码。我宁愿不使用像 Flask 这样的框架。
一个简单的代码示例将不胜感激。
以下是我想出的 Python 代码,但我知道这不是正确的方法,而且它不使用 JSON:
#!/usr/local/bin/python3.7
import cgi # CGI module
# Set page headers and start page
print("Content-type: text/plain")
print("X-Content-Type-Options: nosniff\x0d\x0a\x0d\x0a")
# Form defaults
query_arg = None
# Get form values, if any
form = cgi.FieldStorage()
# Get the rest of the values if the form was submitted
if "query" in form.keys():
query_arg = form["query"].value
if query_arg == "who":
print("Steve", end="", flush=True)
解决方案
您正在尝试使用核心 python 代码构建请求处理程序。它能够处理http请求,在我看来这不是一个好主意,因为它附带了多个安全场景,而且在跨服务器请求中它有点难以处理所有请求和请求场景。我建议使用非常轻量级的 Flask,这将提供路由机制的预先设置,以用非常少的代码处理各种请求 下面是生成 http json 响应的片段,希望对您有所帮助
import sys
import flask
import random, string
from flask import jsonify
class Utils:
def make_response(self):
response = jsonify({
'message': 'success',
})
response.status_code = 200
return response
推荐阅读
- ant-media-server - Ant Media Server:它只是 red5 的一个前端
- django - 在另一个视图django中创建视图
- c# - 是否通过带有异步的实体框架运行存储过程会忽略 context.timeout
- c# - 无效签名 OVH 的 SMS
- java - 登录 Java 并在 Go Lang 中验证
- django - 当我在 Django PostgreSQL 中使用 shell 创建对象时,ID 序列化不会更新
- mysql - CloudSQL - MySql - 导入后内存泄漏
- javascript - Laravel中ajax分页的页面加载
- laravel - HTPP 请求 Ajax 转换为 Laravel 用于外部 api
- python - 为什么`numpy`向下舍入`0.025`而不是向上舍入