导致字符串写入文件的HTTP端点

时间:2018-12-05 07:25:34

标签: python api flask postman

api应该包含一个称为“将文本写入文件”的功能,并输入一个字符串参数

关于写入磁盘的功能,我没有问题,我实现了代码,我的问题是如何使用python设置其余API。

编辑: 这是我的代码:

from flask import (
    Flask,
    render_template
)

import SocketServer
import SimpleHTTPServer
import re

app = Flask(__name__, template_folder="templates")


@app.route('/index', methods=['GET'])
def index():
    return 'Welcome'


@app.route('/write_text_to_file', methods=['POST'])
def write_text_to_file():
    f = open("str.txt", "w+")
    f.write("hello world")
    f.close()


if __name__ == '__main__':

    app.run(debug=True)

无论如何,当我尝试测试我的REST API时: http://127.0.0.1:5000/write_text_to_file

我收到以下错误: enter image description here

现在我正在尝试测试rest-api,但是如何使我的代码启动服务器并测试发布请求api,这就是我的test_class:

import requests
import unittest

API_ENDPOINT="http://127.0.0.1:5000/write_text_to_file"


class test_my_rest_api(unittest.TestCase):
    def test_post_request(self):
        """start the server"""
        r = requests.post(API_ENDPOINT)
        res = r.text
        print(res)

当使用邮递员运行我的请求时,我也遇到了internal_server_error: enter image description here

2 个答案:

答案 0 :(得分:1)

您正在对此网址进行GET请求,但您已指定此端点只能接受POST

@app.route('/write_text_to_file', methods=['POST'])

另外,Flask不需要导入SocketServerSimpleHTTPServer

答案 1 :(得分:0)

不允许该方法,因为Chrome(或任何浏览器)发出GET请求。

在这里,您将其定义为POST

@app.route('/write_text_to_file', methods=['POST'])

将其更改为GET方法,或使用POSTMan之类的工具执行其他HTTP调用类型