Python 如何将RESTPlus与请求结合起来:人类的HTTP?
我正在使用Flask RESTPlus创建一个端点,并使用Requests:HTTP for Humans从一个电子商务站点中获取产品详细信息 我使用请求完美地获得了产品详细信息,但当我将其与FLASK RESTPlus结合使用时,我面临一些问题 以下是代码片段:Python 如何将RESTPlus与请求结合起来:人类的HTTP?,python,flask,python-requests,flask-restful,flask-restplus,Python,Flask,Python Requests,Flask Restful,Flask Restplus,我正在使用Flask RESTPlus创建一个端点,并使用Requests:HTTP for Humans从一个电子商务站点中获取产品详细信息 我使用请求完美地获得了产品详细信息,但当我将其与FLASK RESTPlus结合使用时,我面临一些问题 以下是代码片段: @api.route('/product') class ProductDetails(Resource): query_parser = api.parser() query_parser.add_argument(
@api.route('/product')
class ProductDetails(Resource):
query_parser = api.parser()
query_parser.add_argument('marketplace', required=True, location='args')
def post(self, query_parser=query_parser):
args = query_parser.parse_args()
url = args['marketplace']
try:
response = requests.post(
url=args,
json={
'url': url
}, timeout=60
)
}
except Exception as e:
return {
'status': 'error',
'message': str(e)
}
response = requests.post(
url=args,
json={
'url': url
}, timeout=60
)
当我尝试访问端点时
http://localhost:5000/api/v1/product?marketplace=http://xx.xx.xx.xx/v1/markeplace_name/url
我总是会遇到以下错误:
{
"status": "error",
"message": "No connection adapters were found for '{'marketplace': 'http://xx.xx.xx.xx/v1/market_place_name/url'}'"
}
让我感到困惑的是,为什么我可以事先得到产品的详细信息
那么,我的代码有什么问题吗?任何需要学习的示例或源代码都很好。问题是您正在将
args
dict传递给请求。post
作为url参数。请求验证您提供给.post()
的url是否有效,并且以{'marketplace':…}
开头的url显然是无效的url
守则的这部分:
@api.route('/product')
class ProductDetails(Resource):
query_parser = api.parser()
query_parser.add_argument('marketplace', required=True, location='args')
def post(self, query_parser=query_parser):
args = query_parser.parse_args()
url = args['marketplace']
try:
response = requests.post(
url=args,
json={
'url': url
}, timeout=60
)
}
except Exception as e:
return {
'status': 'error',
'message': str(e)
}
response = requests.post(
url=args,
json={
'url': url
}, timeout=60
)
和args=query\u parser.parse\u args()
当您要求source帮助学习时,以下代码是请求在url开头检查适配器的代码,您可以在sourcecode中找到:
用于检查url的self.adapters.items()
来自:
该方法本质上将预期的url前缀映射到self.adapters
dict中请求的连接适配器类型之一