专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

57个挑战之55-制作一个文件编辑器(2)python 实现-服务端mock

ins518 2024-10-06 10:22:33 技术文章 12 ℃ 0 评论

题目不变,接昨天,清楚了服务端逻辑之后,直接可以写代码,对两个restful api 做请求,并返回相关信息。

import redis
import re
import json
import time
import cgi
from redis import StrictRedis, ConnectionPool
from flask import Flask,jsonify,request
import requests

app = Flask(__name__)

def generate_url():
    #produce process
    url = "http://127.0.0.1/api/202206100906"
    return url

def dohash(url):
    primkey = "ab2dse" #mock
    return primkey

def insert_into_redis(primkey,textcontent):
    #mock 把数据插入数据库,primkey 和 textcontent
    return 1

def check_url_if_exist(url):
    #mock检查逻辑
    return 1

def get_text(url):
    textinfo = "This is the info for test "
    #mock
    return textinfo


"""
1.保存文档:
功能逻辑:接收前端请求,把文字存到数据库,并返回成功信息到后端。
输入: {“text”: "this is the info for test"}
输出: {“info": "information has been successful saved"} 

功能逻辑:
1. 获取输入 
2. 把输入的text 文档生成一个url
3. 把URL 做md5 ,并把md5(url)作为key
4. 把{md5(url): text} 存入数据库
5. 如果存储成功,则返回信息给到客户端


redis 表结构设计: {md5(url): text} 
"""
@app.route('/api/storedoc',methods=['POST'])
def store_doc():
    textcontent = request.json['text'] # 获取输入
    url = generate_url()
    primkey = dohash(url)
    if insert_into_redis(primkey,textcontent) == 1:
       info =" insert into redis url \" {0} \"  ,content \" {1}  \" success".format(url,textcontent)
    else:
       info = "something error has happend"
    return jsonify({"info":info})

"""
2.编辑文档:
功能逻辑: 收集客户端的编辑请求,进入url 并找到对应的数据,把text 数据展示在前端,
输入:{“url": "http://127.0.0.1/api/202206100906”}
输出:{“textinfo":"this is the info for test”}
供客户端逻辑把这个text 数据做展示。

2-1: 接收输入的URL
2-2: 把URL做hash,并到数据库查找数据
2-3: 如果存在则返回数据,如果不存在则返回信息告诉不存在 result = 0

"""
@app.route('/api/editdoc',methods=['POST'])
def edit_doc():
    url = request.json['url']
    if check_url_if_exist(url) == 1:
       textinfo =get_text(url)
       print("info: the text info is {0}".format(textinfo))
    #redirect_to_longurl(longurl)
       return jsonify({"textinfo": textinfo})
    else:
       return jsonify({"info": "the url {0} is not exist".format(url)})


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8008, debug=True)


执行效果:

运行服务端进程:


postman 模仿客户端请求,并返回数据

访问API : /api/storedoc

1.保存文档:
功能逻辑:接收前端请求,把文字存到数据库,并返回成功信息到后端。
输入: {“text”: "this is the info for test"}
输出: {“info": "information has been successful saved"} 

功能逻辑:
1. 获取输入 
2. 把输入的text 文档生成一个url
3. 把URL 做md5 ,并把md5(url)作为key
4. 把{md5(url): text} 存入数据库
5. 如果存储成功,则返回信息给到客户端


redis 表结构设计: {md5(url): text} 

访问API:/api/editdoc


"""
2.编辑文档:
功能逻辑: 收集客户端的编辑请求,进入url 并找到对应的数据,把text 数据展示在前端,
输入:{“url": "http://127.0.0.1/api/202206100906”}
输出:{“textinfo":"this is the info for test”}
供客户端逻辑把这个text 数据做展示。

2-1: 接收输入的URL
2-2: 把URL做hash,并到数据库查找数据
2-3: 如果存在则返回数据,如果不存在则返回信息告诉不存在 result = 0

"""


服务端截图:


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表