相关疑难解决方法(0)

使用 body 执行 Get 请求 - Node js

我正在尝试对弹性搜索 api 执行 GET 请求,这是这种形式所需要的

GET /_search
{
    "query": {
        "more_like_this" : {
            "fields" : ["title", "description"],
            "like" : "Once upon a time",
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用了request 但我找不到如何将正文添加到请求中。

有什么帮助吗?

javascript request node.js elasticsearch

4
推荐指数
1
解决办法
7634
查看次数

正文已被CloudFront拒绝的AWS GET请求

我正在使用AWS SAM(Lambda和API网关)构建API,该合同的合同由第三方定义。

第三方使用主体中包含JSON的GET请求调用我的API。但是,将请求与正文发送到API时,CloudFront会拒绝该请求。

这是请求:

curl -X GET -H "Content-Type: application/json" --data '{"hello":"world"}' https://my-api.execute-api.us-east-2.amazonaws.com/Prod/my-api
Run Code Online (Sandbox Code Playgroud)

这是响应:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <HEAD>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
        <TITLE>ERROR: The request could not be satisfied</TITLE>
    </HEAD>
    <BODY>
        <H1>403 ERROR</H1>
        <H2>The request could not be satisfied.</H2>
        <HR noshade size="1px">
Bad request.


        <BR clear="all">
        <HR noshade size="1px">
        <PRE>
Generated by cloudfront (CloudFront)
Request ID: 1p0St_-e3noQL-2uMxeB_2I6lkMr1mg5afvxJRmVpCdnG67Vgnhj9w==
</PRE>
        <ADDRESS></ADDRESS>
    </BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)

检查日志后,该请求不会命中API网关或Lambda函数。但是,如果我从请求中删除主体,则它将触发Lambda函数,并且会从API中获得相应的错误消息(告诉调用方期望的主体丢失了。)

curl -X GET -H "Content-Type: application/json" https://my-api.execute-api.us-east-2.amazonaws.com/Prod/my-api
Run Code Online (Sandbox Code Playgroud)

我正在通过SAM模板使用API​​网关的基本配置。这是相关的部分:

MyApiFunction:
  Type: AWS::Serverless::Function
  Properties: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway

4
推荐指数
1
解决办法
793
查看次数

用urllib2指定请求方法?

此代码生成一个 POST 请求:

urllib2.urlopen("http://somedomain.com/", data)
Run Code Online (Sandbox Code Playgroud)

我想生成一个 GET 请求 - 关于如何做到这一点有什么想法吗?

谢谢您的帮助!

python post get urllib2 request

3
推荐指数
1
解决办法
2541
查看次数

http获取带有正文的请求

我知道你不应该发送带有正文的 HTTP GET 请求,但是 ceilometer web api 强迫我这样做。我正在开发一个 ceilometer scala 客户端,所以我需要一种 scala/java 方式来发出带有主体的 get 请求。到目前为止,我尝试使用 beeClient ( http://www.bigbeeconsultants.co.uk ) 和使用 httpConnection 的纯 Java,但出现 404 错误。在 curl 我可以通过这种方式实现结果:

curl -X GET -H "X-Auth-Token: ..long long token here.." 
-H "Content-Type: application/json" 
-d '{"q": [{"field": "resource", "op": "eq", "value": "gdfsf"}]}'
http://137.204.57.150:8777/v2/meters/
Run Code Online (Sandbox Code Playgroud)

那是我使用 java HttpURLConnection 的 Scala 代码:

import java.io._
import java.net._
val token = "myToken"
val url = new URL("http://137.204.57.150:8777/v2/meters/")
val body = "{\"q\": [{\"field\": \"resource\", \"op\": \"eq\", \"value\": \"gdfsf\"}]}"
val bodyLenght = …
Run Code Online (Sandbox Code Playgroud)

java scala get http

3
推荐指数
2
解决办法
1万
查看次数

使用 nodejs、express、body-parser 从 GET 请求中解析正文?

是否可以使用 检索body内容express

我开始尝试,body-parser但这似乎不适用于GET. 有没有可以工作的模块?

var express = require('express'),
  bodyParser = require('body-parser'),
  PORT = process.env.PORT || 4101,
  app = express();

app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.route('/')
  .get(function(req, res) {
    respond(req, res, 'GET body contents:\n');
  })
  .post(function(req, res) {
    respond(req, res, 'POST body contents:\n');
  });

app.listen(PORT, function(err) {
  if (err) {
    console.log('err on startup ' + err);
    return;
  }
  console.log('Server listening on port ' + PORT);
});

/*
 * Send a response back to …
Run Code Online (Sandbox Code Playgroud)

node.js express body-parser

3
推荐指数
1
解决办法
8508
查看次数

如何使用 body 发出 GET 请求

首先,我知道有可以使用的模块(https://www.npmjs.com/package/elasticsearch),但我正在寻找一种方法来解决这个问题,使用 node.js 内置模块。

我正在寻找一种使用http模块在 nodejs 中执行以下 curl 请求的方法:
来源:https : //www.elastic.co/guide/en/elasticsearch/reference/2.4/search-count.html

curl -XGET 'http://localhost:9200/twitter/tweet/_count' -d '
{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}'
Run Code Online (Sandbox Code Playgroud)

例如,使用请求正文发出请求。


我已经按照手册中的描述尝试编写帖子数据:https : //nodejs.org/api/http.html#http_http_request_options_callback

req.write(parsedData);
Run Code Online (Sandbox Code Playgroud)

node.js

3
推荐指数
1
解决办法
3209
查看次数

带有 RESTful API 正文的 HTTP GET 请求

我一直在研究如何实施以下内容:

我正在开发一个 RESTful Web API(使用 .Net Core 2.2)。我需要创建一个端点,消费客户端可以在其中向 API 发送一些文本,API 替换此文本中的一些标记,并将文本返回给消费客户端。

我认为客户端应该简单地执行 GET 请求,并在正文中包含文本。回复将是令牌替换后的新文本。然而,根据我的研究,似乎不应该在 GET 请求的正文中添加任何带有语义的内容。我不确定需要由 API 替换的具有某些标记的任意文本是否符合语义?我还看到它说“你不应该使用 GET 请求的正文来改变响应”。我想我在那里遇到了麻烦,因为取决于进入他体内的物质,会影响反应。

因此,我一直在努力找出执行此操作的正确方法。如果有人有指点,我将不胜感激。

谢谢。

api rest get

3
推荐指数
1
解决办法
1万
查看次数

如何传递对象参数来获取 Web api 中的方法?

如何将对象参数传递给 get 方法?我搜索了很多,例如如何将参数传递给asp.net web api get方法?

这里提到我们应该使用[FromUri],但我在.NET Core 2中看不到[FromUri]

[HttpGet]
public IHttpActionResult GetDetails([FromUri] RetrieveDetails  eDetails)
{}
Run Code Online (Sandbox Code Playgroud)

以下是课程

public class RetrieveDetails
{ 
    public string Name{ get; set; }     
    public string Type { get; set; } 
    public List<MoreDetails> MoreDetails { get; set; }
} 

public class MoreDetails  { 
  public string DetailName{ get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

但FromUri不能在.NET Core 2中使用

asp.net-web-api asp.net-core-2.0

3
推荐指数
1
解决办法
8569
查看次数

您将如何设计包含 POST 模拟的 REST API?

例如。我需要设计一个具有两个功能的 API:付款验证和付款创建。我需要两者,因为最终用户应该在实际确认付款创建之前知道一切正常。为了创造,我有

POST .../payment
Run Code Online (Sandbox Code Playgroud)

带有输入体。如果出现问题,它会返回 HTTP 400。

验证(或模拟)执行与创建完全相同的过程,在保存数据之前停止该过程。对于这个验证,最好有类似的东西

解决方案1

GET .../is-payment-ok
Run Code Online (Sandbox Code Playgroud)

还有一个输入体。它返回 HTTP 200,包括一个布尔值答案和一些细节。

这里的资源不是付款,而是关于付款有效性的信息,这对我来说似乎是 REST 兼容的。缺点是 API 的用户可能会感到困惑,因为如果付款无效,那么模拟将返回 HTTP 200(主体中的布尔值设置为false),而创建将返回 HTTP 400。

, 或者

解决方案2

POST .../payment?simulation=true , or
POST .../payment-simulation
Run Code Online (Sandbox Code Playgroud)

这里的 HTTP 响应代码与支付创建完全相同。缺点是我们使用 POST,实际上没有“发布”任何资源。

你会怎么做?这种情况下是否有 REST 规则或惯例?

rest http-post

3
推荐指数
1
解决办法
427
查看次数

Cloud Run 请求在未到达已部署服务的情况下触发错误 400

我目前正在使用Google Cloud Run部署 API,尽管一切正常,但我现在很难理解我收到的错误。

\n

我使用FastAPI在 python3 上创建了 API ,位置模型基于Pydantic\'s BaseModel。

\n

为了说明这一点,我定义了一条测试路线,如下所示:

\n
class Location(BaseModel):\n    lat: float\n    lng: float\n\n\n@router.get(\'/test_404\')\nasync def test_404(origin: Location = Body(...),\n                   destination: Location = Body(...)):\n    print(origin)\n    print(destination)\n    return {\'res\': \'ok\'}\n
Run Code Online (Sandbox Code Playgroud)\n

该路由应在请求正文中采用两个参数:起点和目的地,并且只有当我在本地部署它时才会这样做。\n这:

\n
url_local = "http://0.0.0.0:8080/test_404"\ndata = {\n    \'origin\': {\'lat\': 104, \'lng\': 342},\n    \'destination\': {\'lat\': 104, \'lng\': 342}\n}\nresp = requests.get(url_local, json = data)\nprint(resp.text)\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
\'{"res":"ok"}\'\n
Run Code Online (Sandbox Code Playgroud)\n

当我在 Cloud Run 上部署相同的服务时,就会出现问题。我的所有其他路线都工作正常,但以下是当我将上面的代码与容器 url 一起使用时得到的输出:

\n
    <!DOCTYPE html>\\n\n    <html lang=en>\n    <meta charset=utf-8>\n …
Run Code Online (Sandbox Code Playgroud)

python-3.x google-cloud-platform pydantic google-cloud-run fastapi

3
推荐指数
1
解决办法
3311
查看次数