我将如何在 Rails 设置中以以下格式发送 HTTP POST 请求:
curl https://api.venmo.com/v1/payments -d access_token=4e4sw1111111111t8an8dektggtcbb45 -d email="someemail@gmail.com" -d amount=5 -d note="Delivery."
Run Code Online (Sandbox Code Playgroud)
我想让用户将电子邮件/金额/注释参数输入到网页上的表单中,然后将该数据(当用户单击提交按钮时)传递到存储 access_token 参数的控制器中,然后触发 POST要求。
到目前为止,我已经尝试使用此方法设置控制器(并从视图 html.erb 调用它):
def make_payment
if !params[:access_token].nil?
form_data = {
"email" => @email_to,
"amount" => @amount_to,
"note" => @note_to,
"access_token" => :access_token
}
url = "https://api.venmo.com/v1/payments"
request = Net::HTTP::Post.new(url, form_data)
response = http.request(request)
end
end
Run Code Online (Sandbox Code Playgroud)
这是我当前的视图设置:
<div class="box box-warning">
<div class="box-header">
<h3 class="box-title">Pay Bill using Venmo Account</h3>
<div id="payment_note_input">
<input id="payment_note" type="text" class="form-control" required placeholder="add a note to your payment"> …Run Code Online (Sandbox Code Playgroud) 我使用查询字符串参数成功发出请求:
// Works
var Promise = require("bluebird");
var request = Promise.promisifyAll(require("request"));
request.get({
url: 'https://api.angel.co/1/tags/' + encodeURIComponent(friscoLocationTag) + '/startups',
qs: {
access_token: myToken,
order: 'popularity'
},
method: 'GET'
}, function(error, response, body){
// request success
console.log(body);
});
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试答应我的请求时,我失败了:
// Does Not Work
var Promise = require("bluebird");
var request = Promise.promisifyAll(require("request"));
request.get({
url: 'https://api.angel.co/1/tags/' + encodeURIComponent(friscoLocationTag) + '/startups',
qs: {
access_token: myToken,
order: 'popularity'
},
method: 'GET'
}).then(function(error, response, body){
console.log(body);
});
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
}).then(function(error, response, body){
^
TypeError: undefined is not a …Run Code Online (Sandbox Code Playgroud) 为什么当您对字段执行 query_string 查询时,它不区分大小写,而通配符查询则区分大小写?我本以为两人的行为会很相似。
此 query_string 查询返回结果
{
"query": {
"bool" : {
"must" : [ {
"query_string" : {
"query" : "name:*HILTON*"
}
} ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个通配符查询没有
{
"query": {
"bool" : {
"must" : [{
"wildcard" : {
"name" : "*HILTON*"
}
} ]
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下内容Gulpfile.js:
'use strict';
const gulp = require('gulp'),
request = require('request');
const paths = {
vendor: [
'https://raw.githubusercontent.com/jquery/jquery-dist/master/dist/jquery.min.js',
'https://raw.githubusercontent.com/kenwheeler/slick/master/slick/slick.js'
]
};
gulp.task('vendor', (res) => {
const url = request.get(paths.vendor).pipe(res);
return gulp.src(url)
.pipe(gulp.dest('public/vendor'));
});
gulp.task('default', gulp.parallel('vendor'));
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: options.uri is a required argument
Run Code Online (Sandbox Code Playgroud)
通过这种方法,我试图阻止客户端包管理器,比如 Bower。有没有办法使用request和gulp循环对象列表?
编辑:
我放置此代码进行测试,仅返回循环中的第一行:
gulp.task('vendor', () => {
for (let i=0; i<paths.vendor.length; i++) {
return console.log(paths.vendor[i]);
};
});
Run Code Online (Sandbox Code Playgroud)
就像:
gulp.task('vendor', (res) => {
const url = request.get(paths.vendor[index++]).pipe(res);
return gulp.src(url)
.pipe(gulp.dest('public/vendor'));
});
Run Code Online (Sandbox Code Playgroud) 我正在设计一个系统,它将使用 RabbitMQ 在应用程序之间进行请求/响应。
我习惯于使用 REST API,并且从这个背景出发,我一直在思考如何在执行请求/响应时构造消息。
我需要构建它来处理几种情况:
我计划将有效负载 JSON 格式化。我正在考虑使用某种类似于 HTTP 的响应代码(也许使用相同的代码?)并将响应代码设置为消息上的属性/标头。
对于获取/查询,我的想法是在有效负载对象中拥有一个查询属性。
但这让我想到,我可能认为这太像 REST API,并且可能有一些更好、更成熟的方法来做到这一点。
在进行设置时,我一直在阅读《RabbitMQ in Action》一书,但我没有看到其中提到这一点。我的 google-fu 也让我失败了,没有提供任何结果。
有经验的人愿意分享他们如何构建信息吗?
我正在使用 python 3,并且不明白为什么输出在每个行的开头都有 b 。我不认为 python 2 是这种情况。为什么会这样以及如何删除它?谢谢
import urllib
# fhand = urllib.urlopen('http://www.py4inf.com/code/romeo.txt') in Python 2
fhand = urllib.request.urlopen('http://www.py4inf.com/code/romeo.txt')
for line in fhand:
print(line.strip())
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样
b'But soft what light through yonder window breaks'
b'It is the east and Juliet is the sun'
b'Arise fair sun and kill the envious moon'
b'Who is already sick and pale with grief'
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 phpleague/oauth2-client 和 adespresso/oauth2-getresponse 作为提供商向 GETResponse API(https://apidocs.getresponse.com/v3/case-study/adding-contacts)发出 POST 请求,如下所示:
$data = [
'email' => $email,
'campaign' => [
'campaignId' => $campId
]
];
$request = $this->provider->getAuthenticatedRequest(
'POST',
'https://api.getresponse.com/v3/contacts',
$this->getMyAccessToken(),
$data
);
$response = $this->provider->getParsedResponse($request);
Run Code Online (Sandbox Code Playgroud)
我还尝试在标头中传递 application/json 的内容类型值,但没有成功。
$data = [ 'email' => $email, 'campaign' => [ 'campaignId' => $campId ] ];
`$options['body'] = json_encode($data);
$options['headers']['Content-Type'] = 'application/json';
$options['headers']['access_token'] = $this->getMyAccessToken();
$request = $this->provider->getAuthenticatedRequest(
'POST',
'https://api.getresponse.com/v3/contacts',
$options
);
$response = $this->provider->getParsedResponse($request); `
Run Code Online (Sandbox Code Playgroud)
然而,两种方法中的 getParsedResponse 函数都会返回以下内容:
League \ OAuth2 \ …Run Code Online (Sandbox Code Playgroud) 想知道是否有人可以在这里帮助我:
private static func getURLRequestData(completion: @escaping (Data?) -> ()) {
// Gets the raw JSON Data
let session = URLSession(configuration: .default)
guard let url = URL(string: urlString) else { return }
var urlRequest = URLRequest(url: url)
let headers = [
"ts" : ts,
"apikey" : apiKey,
"hash" : hash,
"limit" : limit,
"orderBy" : orderedBy
]
urlRequest.allHTTPHeaderFields = headers
let task = session.dataTask(with: urlRequest) { (data, response, error) in
if error != nil {
print(#line, error!.localizedDescription)
}
print(response)
completion(data)
} …Run Code Online (Sandbox Code Playgroud) 当我的系统使用 okhttp3 发送 http 请求时,会出现以下问题:413 Request Entity Too Large
我想知道如何在 okhttp3 请求中设置最大大小,或者是否有其他解决方案来解决此问题。
public static String post(String url, String json) throws IOException {
OkHttpClient client = new OkHttpClient().newBuilder()
.readTimeout(1, TimeUnit.MINUTES)
.build();
RequestBody body = RequestBody.create(JSON, json);
Request request = new Request.Builder()
.header("Authorization", authKey)
.url(url)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
if(response.code() != 200) {
return "request error";
}
return response.body().string();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用一个对于网络用户(尤其是智能手机用户)来说相对较大的数据集。我担心表现。对于用户来说哪个问题更大?
\n\nJSON)。CSV) 重新格式化为较大的文件 ( JSON) 以便可以使用。当我将数据编译为 时JSON,它大约为570KB \xe2\x80\x93,远远大于我通常使用的大小。这被直接剥离了(例如,我已将每个键减少为单个字符)。
当我将数据编译为 时CSV,大约为220KB。但是,无论如何,我都需要浏览器将其重新JSON格式化。
这是一个小例子。一份CSV文件:
"year","birth","101","102","103","104","105"\n1981,"Australia",5972,1099,573,747,667\n1981,"China",141,4,3,2,2\n1981,"India",139,5,4,6,2\n1981,"Indonesia",371,9,14,5,6\n1981,"Malaysia",838,72,42,11,14 \nRun Code Online (Sandbox Code Playgroud)\n\n...与相同数据相比JSON:
[{"year":1981,"birth":"Australia","101":5972,"102":1099,"103":573,"104":747,"105":667},\n{year":1981,"birth":"China","101":141,"102":4,"103":3,"104":2,"105":2},\n{year":1981,"birth":"India","101":139,"102":5,"103":4,"104":6,"105":2},\n{year":1981,"birth":"Indonesia","101":371,"102":9,"103":14,"104":5,"105":6},\n{year":1981,"birth":"Malaysia","101":838,"102":72,"103":42,"104":11,"105":14}]\nRun Code Online (Sandbox Code Playgroud)\n\nTLDR:对于性能来说,哪一个更重要:(1) 最小化数据文件的大小,或 (2) 最小化浏览器必须执行的数据处理量?
\n