我'使用Cognito用户池来保护我的API网关.现在我想使用邮递员向我的API发出请求,但我需要传递授权令牌,因为API是安全的.是否有AWS CLI命令或REST API来生成身份验证令牌(通过传递用户名/密码)?我搜索过文档,但找不到任何示例.谢谢你的帮助.
amazon-web-services amazon-cognito aws-api-gateway aws-cognito
仅供参考,我的应用程序类路径中有以下球衣罐以及mimepull jar版本:
jersey-apache-client-1.11.jar
jersey-apache-client4-1.11.jar
jersey-client-1.17.1.jar
jersey-core-1.17.1.jar
jersey-guice-1.17.1.jar
jersey-json-1.17.1.jar
jersey-multipart-1.17.1.jar
jersey-server-1.17.1.jar
jersey-servlet-1.11.jar
mimepull-1.6.jar
Run Code Online (Sandbox Code Playgroud)
我甚至尝试过将它们全部用于1.11或1.17.1作为球衣特定的罐子.当我尝试通过我最新的Chrome浏览器提交文件上传请求时(这是客户端html代码提交文件上传):
<form name="uploadFile" action="/app/fileUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file" class="input-file"/><br/>
<button type="submit" id="upload-btn" class="btn btn-primary">Upload</button>
</form>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我的文件上传泽西资源甚至没有被击中,我的Chrome浏览器出现400错误,我的服务器日志中出现以下异常,但它在我的Firefox浏览器中运行正常:
[toResponse] WebApplicationExceptionMapper status='400' message='org.jvnet.mimepull.MIMEParsingException: Missing start boundary' url='/app/fileUpload'
javax.ws.rs.WebApplicationException: org.jvnet.mimepull.MIMEParsingException: Missing start boundary
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readFrom(MultiPartReaderClientSide.java:146)
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.readFrom(MultiPartReaderClientSide.java:82)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:488)
at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:552)
at com.sun.jersey.multipart.impl.FormDataMultiPartDispatchProvider$FormDataInjectableValuesProvider.getInjectableValues(FormDataMultiPartDispatchProvider.java:122)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:203)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) …Run Code Online (Sandbox Code Playgroud) 我有如下代码,用于检查是否使用某些参数调用了我的命名函数:
const wrapper = mount(<PromotionsContent {...props} />);
let params = new URLSearchParams();
params.append('page', 0);
params.append('size', '20');
expect(getPromotions).toHaveBeenCalledWith(params);
Run Code Online (Sandbox Code Playgroud)
这里 getPromotions 是一个命名函数,它在测试文件中被正确导入和模拟。这以前运行良好,但在升级我的应用程序以使用最新的 CreateReactApp(使用 React 16.12.0)后,它开始崩溃。我还在调用 getPromotions 之前将参数记录到控制台,我实际上可以看到正确的值,但在测试中它只是打印如下并失败:
expect(jest.fn()).toHaveBeenCalledWith(...expected)
- Expected
+ Received
- {},
+ {},
Number of calls: 1
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,如果我直接使用如下所示的被调用参数,它会起作用:
const wrapper = mount(<PromotionsContent {...props} />);
let params = new URLSearchParams();
params.append('page', 0);
params.append('size', '20');
let calledParams = getPromotions.mock.calls[0][0];
expect(calledParams.get('page')).toEqual ('0');
expect(calledParams.get('size')).toEqual ('20');
Run Code Online (Sandbox Code Playgroud)
请问有什么线索吗?