Конечная точка HTTP, которая заставляет строку записывать в файл - PullRequest
0 голосов
/ 05 декабря 2018

API должен включать одну функцию, называемую «запись текста в файл», и вводить строковый параметр

, поскольку для функции записи на диск у меня нет проблем, и я реализовал код, моя проблема в том, какустановить остальные API с помощью Python.

РЕДАКТИРОВАТЬ: это мой код:

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)

в любом случае, когда я пытаюсь проверить мои остальные API: http://127.0.0.1:5000/write_text_to_file

Я получаю следующую ошибку: enter image description here

Теперь я пытаюсь протестировать мой rest-api, однако, как я могу сделать свой код для запуска сервера и для тестирования API post post, это мой 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 голосов
/ 05 декабря 2018

Метод не разрешен, потому что Chrome (или любой браузер) делает GET-запросы.

Принимая во внимание, что вы определили его как POST

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

Либо измените его на метод GET, либо используйте инструмент, такой как POSTMan, для выполнения других типов HTTP-вызовов

0 голосов
/ 05 декабря 2018

Вы делаете запрос GET для этого URL, но вы указали, что эта конечная точка может принимать только POST:

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

Кроме того, SocketServer и SimpleHTTPServer импорт с Flask не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...