似乎我的问题可能与此类似.
我的API网关中有一个API,我正在通过POST的multipart/form-data文件的端点进行HTTP代理.
如果我直接调用http端点(而不是通过API网关) - 使用邮递员,它按预期工作,但是,使用API网关端点(通过邮递员)失败.
我已经比较了两个似乎相同的请求(通过fiddler和CloudWatch日志):
请求直接API调用(工作):
POST https://domainname/api/v1/documents HTTP/1.1
Host: api.service
Connection: keep-alive
Content-Length: 202
Authorization: AuthToken
Postman-Token: a75869d6-1d64-6b9f-513d-a80ac192c8e1
Cache-Control: no-cache
Origin: chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop
docMetaInfo: some extra data needed
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryB85rsPlMffA2fziS
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
------WebKitFormBoundaryB85rsPlMffA2fziS
Content-Disposition: form-data; name=""; filename="Test.txt"
Content-Type: text/plain
This is a test Text File
------WebKitFormBoundaryB85rsPlMffA2fziS--
Run Code Online (Sandbox Code Playgroud)
来自API网关的请求(不工作):
POST https://GATEWAY_domainname/api/v1/documents HTTP/1.1
Host: api-Gateway.service
Connection: keep-alive
Content-Length: 202
Authorization: …
Run Code Online (Sandbox Code Playgroud) 我刚刚从Git repo(3.0.19)中删除了最新的Swagger:https://github.com/swagger-api/swagger-ui.git并更新了我的API以使用新版本.
跑来git describe --tags
确认,我的版本目前是:v3.0.19-6-gaab1403
我遇到的问题是这里描述的问题,我的响应是403(我可以在浏览器的检查器中看到这个),虽然我有错误403的响应,但我仍然收到TypeError: Failed to fetch
消息.
这是我对403响应的定义的片段:
"403": {
"description": "Forbidden",
"headers": {
"Access-Control-Allow-Origin": {
"type": "string"
}
}
},
Run Code Online (Sandbox Code Playgroud)
我也注意到它在这里报道,但我知道这不是一个CORS问题,因为我测试了端点并且OPTIONS返回正确,如果使用有效信息调用端点也是如此(我强制使用403).
有人能指出我正确的方向吗?
更新:我已经测试了401响应,响应相同.
并且400正在按预期工作:
我目前有一个 API 通过我们的 API 网关,该网关附加了多个自定义授权者 -LiveAuthorizer
和TestAuthorizer
.
我想根据正在访问的阶段更改我的自定义授权者,就像阶段变量一样。如果我们处于阶段测试,请使用TestAuthorizer
,如果处于现场使用LiveAuthorizer
。
从我的研究和本页来看,这似乎不可能,有什么想法吗?
PS - 我知道这可以在执行身份验证的 Lambda 函数内处理,我只是好奇是否有另一种方法(类似于阶段变量)。
amazon-web-services custom-authentication aws-lambda aws-api-gateway
我正在尝试调整自动生成的Swagger定义中使用的模型的“ displayName”。
这只会影响Swagger名称,这意味着代码中的名称空间将保持不变,而从Swagger UI查看模型时,您会看到一个自定义名称。
当前,从代码返回的模型名称是一个命名空间,如下所示:b.c.d.e.f
,我想在代码中添加一个属性,并“屏蔽” Swagger文档的名称,以便在生成文档/ Swagger定义时它将显示为CustomSwaggerName
。
我有一些API(C#)使用的工具包括Swashbuckle
(preferred)和SwaggerGen
,但是现在,如果可能的话,我想使它在其中任何一种下工作。
我尝试使用看起来正确的属性:
[ResponseType(typeof(Company)),DisplayName("NewCompany")]
[SwaggerResponse(200,"NewCompany",typeof(object))]
Run Code Online (Sandbox Code Playgroud)
没有运气。我还浏览了SwashBuckle git存储库,希望找到一些东西。
我知道这似乎是一个奇怪的用例,但这是针对为我们的AWS API Gateway自动化编写的工具,该工具将使用Swagger定义进行一些比较。
使用Swagger - UI
3XX
我只想知道这是否可能,如果可以,如何:
当前,我们需要显示hide
的定义URL路径Swagger - UI
。
我知道无法删除此URL,我也不想这样做,我只想对查看此页面的客户端隐藏/屏蔽文本框。
在这里查看新的Swagger文档,您可以添加一些很棒的技巧和其他功能-与查询有关的任何内容我都看不到。
我很确定,我可以查询HTML,找到有问题的元素的ID,然后在index.html中手动更改它的显示,我更喜欢使用内置方法,如果有的话在进入之前那可能的解决方案。
即像这样的事情是可行的,并且可以工作:
<style> .download-url-input { display: none !important; } </style>
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
我正在转换一些现有代码以使用 React Router。
当前使用的代码<a href="#" ...>
,我正在更改为<Link to=??>
.
我的问题是:我应该使用什么"to"
参数?如果我使用to="#"
,应用程序将路由到“/”,这不是我想要的。
如果我使用当前的路线名称,它会起作用,但是整个想法 href="#"
是代码不必知道它是如何访问的。
我正在使用带有 history=browserHistory 的 React Router 2。
遵循此AWS文档,我能够在API网关上创建一个新的终结点,该终结点能够处理S3存储库中的文件。我遇到的问题是文件大小(AWS的有效负载限制为10MB)。
我想知道,如果不使用lambda解决方法(此链接将对此有所帮助),是否有可能上传和获取大于10MB的文件(如果需要,甚至可以二进制),因为这是使用S3服务作为代理。 -还是这个限制?
我尝试了PUT
ting和GET
ting大于10MB的文件,每个响应都是典型的"message": "Timeout waiting for endpoint response"
。
看起来这Lambda
是唯一的方法,只是想知道是否有人使用S3作为代理来解决此问题。
谢谢
我正在使用UdpClient
类,.net 3.5
我需要将多个应用程序绑定到同一个端口。
因此,如果UDP
服务器广播任何请求 - 在端口上侦听的所有应用程序都可以接收消息,但问题是,当我尝试将应用程序绑定到同一端口时,只有一个应用程序收到消息,而另一个应用程序没有。
下面是这两个应用程序的一些示例代码:
UdpClient udpClient = new UdpClient();
Thread thread;
IPEndPoint endPoint = new IPEndPoint(IPAddress.Loopback, 11000);
public Form1()
{
//CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
udpClient.ExclusiveAddressUse = false;
udpClient.Client.SetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpClient.Client.Bind(endPoint);
}
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
thread.Abort();
udpClient.Close();
Close();
}
}
private void ReceiveMessage()
{
//while (true)
//{
// IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, 11000);
// byte[] content = udpClient.Receive(ref endPoint);
udpClient.BeginReceive(new AsyncCallback(Read_Callback), …
Run Code Online (Sandbox Code Playgroud) 似乎HTTP
响应被403
接受为对 API 网关设置上不存在的资源或端点进行的任何调用的规范和正确处理(这篇文章)。
示例:对我的网关上不存在的端点的调用将是:
这将返回一个403 forbidden
. 这可能相当令人困惑和误导。
我想知道是否有人设法配置他们的 API 网关,以便对不存在的端点/资源的任何调用都会返回我认为是 404 的正确响应?
提前致谢。
编辑
根据bejos-aws
的建议,我可以覆盖默认行为,403 Missing Authentication Token
但是,这不会解决我的问题,因为所有有效403
错误都会返回404
不正确的响应。
另外,我的问题是关于403 forbidden
AWS 列表中的默认响应中不存在的a Gateway Response
(即使存在,也无济于事)。
看来这是不可能的?
这个问题来自这个SO线程。
似乎我有一个相似但不相同的查询,因此最好像@Val建议的那样让其他人从中受益。
因此,类似于上述内容,我需要在索引中插入大量数据(我的初始测试大约是10000个文档,但这只是针对POC,还有更多)。我想插入的数据在.json文档中,看起来像这样(片段):
[ { "fileName": "filename", "data":"massive string text data here" },
{ "fileName": "filename2", "data":"massive string text data here" } ]
Run Code Online (Sandbox Code Playgroud)
我个人承认,我是ElasticSearch的新手,但是,从阅读文档开始,我的假设是我可以获取.json文件并根据其中的数据创建索引。从那以后,我了解到json中的每个项目似乎都需要有一个“标头”,例如:
{"index":{}}
{ "fileName": "filename", "data":"massive string text data here" }
Run Code Online (Sandbox Code Playgroud)
意思是,这不是实际的json格式(如此),而是操纵的字符串。
我想知道是否有一种方法可以直接获取import
json数据(采用json格式),而不必先手动操作文本(因为我的测试数据有10000个条目,我敢肯定,你会明白为什么我d不想手动执行此操作)。
有什么建议或建议的自动化工具来帮助您吗?
PS-我正在使用Windows Installer和Postman进行通话。
我有一个用.NET Core(C#)编写的简单Lambda函数,它使用该APIGatewayProxyRequest
对象遍历所有请求属性.
如果我测试这个lambda函数(来自AWS Lambda),并传递一个包含基本信息的示例事件配置:
我可以这样得到这样的信息:
public string FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
logger.Logger.Log($"Body: {request.Body} \n");
logger.Logger.Log($"Path: {request.Path} \n");
logger.Logger.Log($"Resource: {request.Resource} \n");
Run Code Online (Sandbox Code Playgroud)
我怎么能从相同的数据访问自定义上下文或授权者值:
我试过了:
logger.Logger.Log($"RequestContext Authorizor: {request.RequestContext.Authorizer} \n");
Run Code Online (Sandbox Code Playgroud)
包括它的不同特性(StringKey
,PrincipleId
等等)
从Node.js看来,这可以通过使用这个简单地实现:
event.requestContext.authorizer.customKey
Run Code Online (Sandbox Code Playgroud)
C#中没有这样的东西?
我想WinForm
从"设置"中设置控件的文本.
如果我想在将来改变程序语言,这很容易;
只需要修改适当的设置.
其中一个messageBoxes
文本有一个换行符(\n
).
当我从"设置"中插入文本时,\n将显示为文本的一部分,并且没有换行符.
MessageBox.Show(P_Settings.NotificationMessageBoxes.Default.ProcessFinishedNotification,
P_Settings.NotificationMessageBoxes.Default.ProcessFinishedNotificationTitle,
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有这个 model
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Text;
namespace PrototypeHelp.Models
{
public class DocumentModel
{
public int documentID { get; set; }
public String Title { get; set; }
public DateTime DateCreated { get; set; }
public String Description { get; set; }
public int authorID { get; set; }
public String AuthorName { get; set; }
public int categoryID { get; set; }
public String Category { get; set; }
public int topicID …
Run Code Online (Sandbox Code Playgroud) c# ×5
aws-lambda ×4
swagger-ui ×4
swagger ×2
amazon-s3 ×1
asp.net-mvc ×1
json ×1
react-router ×1
settings ×1
swagger-2.0 ×1
swashbuckle ×1
udpclient ×1
winforms ×1