#python #flask
#python #flask
Вопрос:
У меня есть конечная точка flask, определенная как показано ниже.
Когда я пытаюсь использовать что-либо из приведенного ниже, я получаю ошибку 500 при обстоятельствах, когда я пытаюсь отправить URL-адрес в качестве параметра поиска.
Я попытался отправить URL-адрес в трех разных форматах, каждый из которых каким-то образом дал сбой. И я не могу понять, как это отправить.
Я работаю над отдельным проектом, где мне была отправлена только строка, и я не могу понять, что здесь отличается.
Строка, отличная от URL
## Curl
`curl http://localhost:8080/search/'sdfsdf'`
## Result on console
{"message": "Internal Server Error"}
## Result on server
Invalid URL 'sdfsdf': No schema supplied. Perhaps you meant http://sdfsdf?
127.0.0.1 - - [28/Oct/2020 16:54:39] "GET /search/sdfsdf HTTP/1.1" 500 -
Строка URL
## Curl
curl http://localhost:8080/search/'https://en.wikipedia.org/wiki/2016_United_States_presidential_election'
## Result on console
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
## Result on server
127.0.0.1 - - [28/Oct/2020 16:58:34] "GET /search/https://en.wikipedia.org/wiki/2016_United_States_presidential_election HTTP/1.1" 404 -
Строка URL с преобразованными косыми чертами и точками с запятой
## Curl
curl http://localhost:8080/search/'https://en.wikipedia.org/wiki/2016_United_States_presidential_election'
## Result on console
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
## Result on server
127.0.0.1 - - [28/Oct/2020 16:57:35] "GET /search/https://en.wikipedia.org/wiki/2016_United_States_presidential_election HTTP/1.1" 404 -
API
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})
api = Api(app)
parser = reqparse.RequestParser()
##############################
# LOADERS
##############################
class SearchForPage (Resource):
# SEARCHES FOR A MATCHING WIKIPEDIA URL
# IF EXISTS RETURN
# Headers Array
# References Array
# IF NOT EXISTS
# URL Not Found Message
def get(self, query_url):
print(query_url)
if(query_url):
title = ScrapeTitle(query_url)
return("You sent me to : " title)
else:
return ("I didn't find anything at: " query_url)
##############################
# ROUTES
##############################
# Route_1
## ACCEPTS A URL AS A VARIABLE
## GET (RETURNS) AN ID IF EXISTS
## (RETURNS) 'NO RECORDS' IF NOT EXISTS
api.add_resource(SearchForPage, '/search/<string:query_url>')
Комментарии:
1. api.add_resource(SearchForPage.get, ‘/search/<строка:query_url>’)
2. Это приводит к:
resource_func = self.output(resource.as_view(endpoint, *resource_class_args, AttributeError: 'function' object has no attribute 'as_view'
3. я не знаю, как вы написали resource_func, но если вы идете простым
@app.route('/search/<search_query>', methods=['Get'])
, то его становится легко реализовать и протестировать с помощью postman4. Я не писал resource_func, это похоже на системную ошибку. Отдельно, зачем использовать
@app.route
, когдаapi.add_resource
работает хорошо? Я ищу только то, что удаляет апострофы из URL-адреса, который передается в api.