怎么查询http请求是不是有响应
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么查询http请求是不是有响应相关的知识,希望对你有一定的参考价值。
参考技术A Http(Hyper Text Transfer Protocal)是超文本传输协议,它用于网页间传送数据,http采用的是请求、响应模型,也就是说浏览器和Web服务器之间的交互(http事务)包括浏览器发起的一个请求和随后服务器返回的一个响应。请求和响应本质上是文本流,客户端和服务器端把它们解释为首部和紧随其后的主体部分。一个http请求主要由首部信息和可能包含一些数据或参数的主体部分组成。
一个http响应通常包含首部信息和返回页面的html标记。
那么我们如何查看http首部信息呢?firefox提供了一个插件LiveHTTPHeaders,它的功能是记录浏览器获得http流量,以及当前的请求和响应首部信息,GET和POST方法的查询字符也被记录下来,但是响应的内容不会被记录。本回答被提问者和网友采纳
接收带变量的 HTTP 请求,查询 BQ 并返回响应
【中文标题】接收带变量的 HTTP 请求,查询 BQ 并返回响应【英文标题】:Receive HTTP request with Variable, Query BQ and Return Response 【发布时间】:2020-06-12 02:44:39 【问题描述】:我希望在 GCP 中创建一个云函数,它接收带有参数的 HTTP 请求,获取参数并将它们传递给 SQL 语句中的 Bigquery,并返回我可以传递回网站的结果。
我对此很陌生,而且我绝对不是工程师。我的云功能已正确部署,并且在浏览器中收到“OK”响应
当我点击它但无法让BQ
返回的值显示在浏览器上时。
到目前为止,这是我的功能,并提前感谢您的帮助。
import google.cloud.bigquery
def audience(QUERY):
# BQ Query to get add to cart sessions
QUERY = """select
visitId,
from bigquery-public-data.google_analytics_sample.ga_sessions_20170801
limit 10;
return QUERY"""
print(audience)
【问题讨论】:
【参考方案1】:这是一个云函数示例,它完全运行您在帖子中提到的查询。尽管如此,它可以根据您的需要很容易地适应任何其他查询。您基本上需要遵循此tutorial 才能部署该功能并基本了解如何使用Client Library for BigQuery 查询数据。
以下是您需要做的总结:
-
创建一个文件夹(例如
cloudfunctionsexample
)并使用cd [FOLDERNAME e.g. cloudfunctionsexample]
进入该文件夹并在该文件夹内创建两个文件:main.py
和requirements.txt
。
一个。主.py:
from flask import escape
from google.cloud import bigquery
client = bigquery.Client()
def bigquery_example(request):
request_json = request.get_json(silent=True)
request_args = request.args
#Check if request have all the correct parameters to run the query
if request_json and 'column' in request_json:
column = request_json['column']
elif request_args and 'column' in request_args:
column = request_args['column']
else:
return('You are missing the column parameter on the request.')
if request_json and 'name' in request_json:
name = request_json['name']
elif request_args and 'name' in request_args:
name = request_args['name']
else:
return('You are missing the name of the dataset parameter on the request.')
if request_json and 'limit' in request_json:
limit = request_json['limit']
elif request_args and 'limit' in request_args:
limit = request_args['limit']
else:
return('You are missing the limit parameter on the request.')
#Construct the query based on the parameters
QUERY = ('SELECT '+column+' FROM `'+name+'` LIMIT '+limit)
#print(QUERY)
try:
query_job = client.query(QUERY) # API request
rows = query_job.result() # Waits for query to finish
# Create a list and make the results HTML compatible to be able to be displayed on the browser.
row_list = []
for row in rows:
row_list.append(str(row[column]))
return("<p>" + "</p><p>".join(row_list) + "</p>")
except e:
return(e)
b.要求.txt:
flask
google-cloud-bigquery
-
(假设您有Cloud SDK installed)并且您确保App Engine default service account(这是Cloud Functions 使用的默认帐户)分配了Editor 角色,运行以下命令在您的项目中部署该功能:
gcloud functions deploy bigquery_http_example --runtime python37 --trigger-http --allow-unauthenticated --entry-point=bigquery_example --timeout=540
- 获取 Cloud Function URL 并使用 curl 命令发出 POST 请求,或简单地将参数添加到 Cloud Function URL 以向 Cloud Function 端点发出 HTTP 请求并直接在浏览器上查看结果。李>
一个。卷曲:
curl -X POST https://[REGION-FUNCTIONS_PROJECT_ID].cloudfunctions.net/bigquery_http_example -H "Content-Type:application/json" -d '"column":"visitId","name":"bigquery-public-data.google_analytics_sample.ga_sessions_20170801","limit":"10"'
b.云函数网址:
https://[REGION-FUNCTIONS_PROJECT_ID].cloudfunctions.net/bigquery_http_example?column=visitId&name=bigquery-public-data.google_analytics_sample.ga_sessions_20170801&limit=10
【讨论】:
以上是关于怎么查询http请求是不是有响应的主要内容,如果未能解决你的问题,请参考以下文章