网络编程
位置:首页>> 网络编程>> Python编程>> python+flask实现API的方法

python+flask实现API的方法

作者:kd丹妮儿  发布时间:2023-12-18 17:25:03 

标签:python,flask,API

本文为大家分享了python+flask实现API的具体方法,供大家参考,具体内容如下

Flask 框架


#-*-coding:utf-8-*-

#pip install flask
#pip install flask-restful

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
 return "hello world!"

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

pycharm运行该程序后,在浏览器输入http://127.0.0.1:5000/,即可看到一个网页:

python+flask实现API的方法

Flask + flask_restful创建一个简单的应用程序:


from flask import Flask
from flask_restful import Resource,Api

app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
 def get(self):
   return {"hello":"world"}

api.add_resource(HelloWorld,'/')

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

python+flask创建API: 获取post请求传递的json数据


from flask import Flask,abort,jsonify,make_response,request

app = Flask(__name__)

@app.route('/analyze/' ,methods=['POST'])
def call_wiscan_analyze():
 if not request.json or not 'path' in request.json:
    abort(400)
 path = request.json['path']

if __name__ == '__main__':
 app.run(port='50055',debug=True)

请求:


from requests import post

if __name__ == '__main__':
 path='"F:/nb_org_data/86574FG01/2013/1029/0008/86574FG01201310290008.img"'
 ret = post('http://localhost:50055/analyze/',json={'path':path})
 print(ret.text)

将API封装为win32服务


import win32serviceutil
import win32service
import win32event
import win32timezone
from flask import Flask,abort,jsonify,make_response,request
import threading

app = Flask(__name__)
_ONE_DAY_IN_SECONDS = 60 * 60 * 24

@app.route('/analyze/' ,methods=['POST'])
def call_wiscan_analyze():
 if not request.json or not 'path' in request.json:
    abort(400)
 path = request.json['path']

def thread_target():
 app.run(port='50055', debug=True)

class GRPCWin32Client(win32serviceutil.ServiceFramework):
 _svc_name_ = 'GRPCWin32Client'
 _svc_display_name_ = 'Nuctech GRPC Client'
 _svc_description_ = 'wiscan grpc client'

def __init__(self, args):
   win32serviceutil.ServiceFramework.__init__(self, args)
   self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
   #self.logger = self._getLogger()
   self.run = True

def SvcDoRun(self):
   th = threading.Thread(target=thread_target)
   th.start()
   try:
     while self.run:
       time.sleep(_ONE_DAY_IN_SECONDS)

except KeyboardInterrupt:
     pass

pass

def SvcStop(self):
   self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
   win32event.SetEvent(self.hWaitStop)
   self.run = False

if __name__ == '__main__':
 import sys
 import servicemanager
 if len(sys.argv) == 1:
   try:
     evtsrc_dll = os.path.abspath(servicemanager.__file__)
     servicemanager.PrepareToHostSingle(GRPCWin32Client)
     servicemanager.Initialize('GRPCWin32Client', evtsrc_dll)
     servicemanager.StartServiceCtrlDispatcher()
   except win32service.error as details:
     import winerror
     if details == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
       win32serviceutil.usage()
 else:
   win32serviceutil.HandleCommandLine(GRPCWin32Client)

注意:

启动一个线程运行app.run(),否则安装完win32服务,启动服务后,无法停止服务,因为app内部循环没有结束!

来源:https://blog.csdn.net/kanghui_898/article/details/84025523

0
投稿

猜你喜欢

  • 本文实例讲述了Python脚本实现虾米网签到功能的方法。分享给大家供大家参考,具体如下:概述这个脚本完成了自动登录虾米网、签到的功能。大致要
  • 说明:本例改编自《Python编程快速上手》。例子很简单我就不多说了 直接上代码,给初学python练手用。给你6次机会猜对一个预先生成好的
  • 这篇文章主要介绍了python爬虫 正则表达式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
  • asp程序运行速度试验实验:1。作相同的分支条件判断:IF  比  SELECT慢。用以下程序测试:
  • driver = webdriver.Chrome()报错driver = webdriver.Chrome()是因为没有chromedri
  • 当今,有一点可以肯定的是,设计的领域在扩大,这是一个需要设计的世界。拒最新的统计资料显示,中国目前已有正规的设计学院教学机构700多所,并且
  • 新闻系统、blog系统等都可能用到将动态页面生成静态页面的技巧来提高页面的访问速度,从而减轻服务器的压力,本文为大家搜集整理了ASP编程中常
  • Google以其简洁的搜索框引领着互联网,搜索系统似乎成了每个网站必备品,甚至于是那些本身几乎是由静态页面组成的企业网站都要来个搜索功能,这
  • 起因因为一些事情,需要将域名解析为ip地址,想到Python作为万能语言,就用Python来实现这个功能代码import socketurl
  • 模块的相关概念 1. 什么是模块模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块模块的英文名叫:
  • JavaScript中有很多内部属性和方法,在大多数情况下,只有JavaScript引擎才可以访问,但不论什么都是有特例的,在这里就是指Mo
  • 在linux服务器lvs负载均衡、双机热备应用中经常用到mysql双机热备,安装和配置过程如下:一、 安装MYSQL# cp mysql-s
  • 1、有时候我们可能想让字符串倒序输出,下面给出几种方法方法一:通过索引的方法>>> strA = "abcdeg
  • 传统Python语言的主要控制结构是for循环。然而,需要注意的是for循环在Pandas中不常用,因此Python中for循环的有效执行并
  • 昨天有人在群里问图1的边框效果是否能实现。 边框效果图有人给出答案,需要嵌套一个元素实现。我当时粗粗写了个测试页面,但是时间太晚了,也没有细
  • 目录一、axis简介二、不一样的axis对于axis=0三、总结补充:python中某些函数axis参数的理解在我们使用Python中的Nu
  • 本文实例讲述了Django发送html邮件的方法。分享给大家供大家参考。具体如下:在Django中,发送邮件非常的方便,一直没有时间,今天来
  • 在写 Python 代码的时候,一个很好的编码实践就是使得你的代码简洁,易懂。组织代码,设置变量,以及给函数有意义的名字,都是几个不错的方法
  • 这个问题好像在各种数据库中都存在,该如何处理呢?一、SQL中:sql="CREATE TABLE phone&
  • 引言最近研究Go爬虫相关的知识,使用到goquery这个库比较多,尤其是对爬取到的HTML进行选择和查找匹配的内容时,goquery的选择器
手机版 网络编程 asp之家 www.aspxhome.com