使用flask实现restfulapi

今天早上想快速实现几个临时使用的http接口,供其他人调用,之前都是使用java去写的,最近因为都玩着python,第一时间想到使用flask去实现试试,也体验下flask轻量级的框架。

https://flask-restful.readthedocs.io/en/latest/上快速过了一次示例文档,也在度娘上看了下其他人的例子,但很多都是只写了服务端或者只写了客户端,两端同时实现的示例很少。

服务端实现

下述实现分别支持post和get的服务端,在实现过程中发现传参存在多种形式,例如参数在header还是在body中,数据格式是text还是json,这是需要注意的,因为影响到调用时参数位置及参数格式的设置。

#!/usr/bin/env python
import sys
from flask import Flask, jsonify
from flask import abort
from flask import request
import logging
import time
logging.basicConfig(format='[%(levelname)s %(asctime)s %(filename)s %(lineno)s]:%(message)s', filename='http_server.log',level=logging.INFO)
app = Flask(__name__)

@app.route('/phone/risk', methods=['POST', 'GET'])
def phone_restful():
    phone = ''
    appid = ''
    if request.method == "POST":
        phone = request.form.get('phone')
        appid = request.form.get('appid')
    if request.method == "GET":
        phone = request.args.get('phone')
        appid = request.args.get('appid')
    print('phone=%s, appid=%s' % (phone, appid))
    #在这实现功能逻辑

    return jsonify({'retcode': ret, 'message':'成功', 'data':data})

def task():
    #拉起http服务进程
    app.run(host="0.0.0.0", port=1688, threaded=True)

if __name__ == '__main__':
    task()

测试

使用postman测试post

使用postman测试get

客户端实现

#!/usr/bin/env python
#-*- coding:utf-8 -*-
import os
import sys
import json
import time
import requests
#post的方式
def post_fun(phone, appid):
    url = 'http://xxx.xxx.xxx.xxx:1688/phone/risk'
    headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)','Content-Type': 'application/x-www-form-urlencoded'}
    values = {'phone':phone,'appid':appid}
    response  = requests.post(url, data =values, headers = headers)
    if response.status_code == 200:
        print('成功')
    else:
        print('失败')
#get的方式
def get_fun(phone, appid):
    url = 'http://xxx.xxx.xxx.xxx:1688/phone/risk?phone=%s&appid=%s' % (phone, appid)
    response  = requests.get(url)
    if response.status_code == 200:
        print('成功')
    else:
        print('失败')


if __name__ == '__main__':
    phone = '13333333220'
    appid = 'goodboy16888'
    post_fun(phone, appid)
    get_fun(phone, appid)

一个极简单的示例,希望对新手有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值