当前使用springfox 2.9.2来Swagger文档在Spring中创建的API。我想在文档中添加示例响应,如下图所示;
我的理解是,我可以做类似的事情:
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success",
examples = @io.swagger.annotations.Example(
value = {
@ExampleProperty(value = "{'snapshot'?{'type': 'AAA'}}", mediaType = "application/json")
}))
Run Code Online (Sandbox Code Playgroud)
GET在这种情况下,我将此代码段放在方法上方。不幸的是,上面的2个示例始终显示:标识符预期错误
但我也看到我也可以这样做:
@ApiResponses(value = {
ApiResponse(code = 200, message = "Success", response = MyModel.class,
)
})
Run Code Online (Sandbox Code Playgroud)
另外我看到我可以添加一个带有@ApiOperation级别的示例:
@ApiOperation(value = "Create a Account", nickname = "createAccount", notes = "Create a account", response = AccountResponse.class, tags={ })
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如何在Swagger文档中添加示例JSON响应?
将Swagger / Springfox指向我的模型/ bean并使其自动生成示例响应,并随着bean /模型的每次更新自动更新,将是理想的选择。这是上面第二个代码段应该做的吗?
我找到了这个链接,我想知道 URL 中的所有这些参数是什么(删除了&并将它们分成单独的行以提高可读性):
https://www.amazon.com/Backseat-Organizer-Protector-Storage-Organizers/dp/B071Y6F4SR/
ref=as_li_ss_tl ---> 这似乎在每个亚马逊附属链接中
smid=A2AMCOIC0OKFCA ---> 这是产品类别 ID?
pf_rd_p=695f29ac-ec28-4005-ae23-4a6ff667d724
pf_rd_s=slot-4
pf_rd_t=701
pf_rd_i=gb_main
pf_rd_m=ATVPDKIKX0DER
pf_rd_r=1Z9QWS8H760T7QX98SV2
链接代码=sl1
tag=xxxxxxx-20 ---> 这是发布链接的亚马逊附属公司的 ID
linkId=96f85c1971c0eb3edcf31e3faf903aea
utm_content=buffer9bbb8
utm_medium=社交
utm_source=twitter.com ---> 原始链接已发布到 Twitter,所以我猜这是用于跟踪和指标
utm_campaign=buffer ---> 这似乎表明该消息源自缓冲区社交媒体工具
我已将一个简单的 Spring boot 应用程序部署到 Elastic Beanstalk,但当我尝试访问 /serviceinfo 或用于此目的的任何路径时,它始终显示Health
Degraded在仪表板中,我收到此错误 502 Bad Gateway nginx/1.14.1
该应用程序在本地运行
但在 EBS 日志上我读到:
2019/03/02 06:55:49 [error] 3298#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 111.215.59.25, server: , request: "GET /serviceinfo HTTP/1.1", upstream: "http://127.0.0.1:5000/serviceinfo", host: "myservice.us-east-1.elasticbeanstalk.com"
因为我过去部署过其他 Spring boot 应用程序,所以我知道server.port=5000,我已经在 Spring 应用程序属性中设置了它,当它不起作用时,我在 EBS 中再次设置了它作为环境变量。但我仍然遇到同样的错误。也在SpringBootServletInitializer主类中使用,但这也没有帮助。
我还能尝试什么让它运行
我已根据所述的详细信息配置了泽西(使用tomcat服务器),直到此处的步骤6.3:http: //www.vogella.com/tutorials/REST/article.html#jerseyprojectsetup
下面是我的web.xml文件,唯一的区别是路径/包名称为 jersey.config.server.provider.packages
说明书;
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.vogella.jersey.first</param-value>
Run Code Online (Sandbox Code Playgroud)
因为com.vogella.jersey.first是他们的包名,而我选择将我的名字指向我的默认包(jerseytest)
但这是我的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>jerseytest</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>jerseytest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
当我在tomcat服务器上运行应用程序时,我不断得到:
HTTP状态404 - 未找到
输入状态报告
Message /jerseytest/描述源服务器未找到目标资源的当前表示,或者不愿意透露存在该目标资源.
Apache Tomcat/8.5.23
当我将浏览器指向教程中提到的终点时:
http://localhost:8080/com.vogella.jersey.first/rest/hello
我收到一个未找到的错误:
HTTP状态404 - 未找到
输入状态报告
Message Not Found描述源服务器未找到目标资源的当前表示,或者不愿意透露存在该目标资源.
Apache Tomcat/8.5.23
当我将浏览器直接指向http:// localhost:8080/rest/hello时
我明白了:
HTTP状态404 - …
据我了解,在 Spring 中使用 Swagger 记录 API 时,我可以通过添加注释来更改 API 的描述@Api,但是当我按如下方式添加时
@Api(value= "NEW_NAME", description="NEW_DESCRIPTION")
Run Code Online (Sandbox Code Playgroud)
仅更改了描述,未更改名称。
如这里所见
此外,我不确定默认名称和描述来自哪里,在添加 API 之前,名称似乎是从控制器名称派生的,但描述;对我来说,这看起来很自然,很人性化,几乎就像带有大写字母和所有内容的硬编码字符串。我对代码进行了搜索,但找不到这些字符串。Swagger 从哪里获取这些值?
谢谢
当使用 google sheet api append 方法(在任何语言中)时,要附加到工作表的值将添加到最后一个非空行之后。因此,新值出现在工作表的底部,如下所述:https : //developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append#InsertDataOption
如何以新值出现在工作表顶部的方式附加值?
尝试使用Hibernate 4.3.11.Final和SQLite方言使用for循环保存/提交数据 com.enigmabridge:hibernate4-sqlite-dialect
当我运行此代码并检查Sqlite数据时,我看到它只保存了1个项目(好像它只提交了一次),而一个项目是我在数据库中看到的最后一个(我生成的5个项目中的) 。
configureSessionFactory();
Session session = null;
Transaction tx=null;
try {
session = sessionFactory.openSession();
SyndEntry entry = null;
URL feedUrl = new URL(rssUrl);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
tx = session.beginTransaction();
BroadcastItem item = new BroadcastItem();
for (int i = 0 ; i < 5 ; i++) {
entry = (SyndEntry) feed.getEntries().get(i);
item.setMessage(entry.getTitle());
item.setLinkUrl(entry.getLink());
session.save(item);
}
tx.commit();
} catch (Exception ex) {
ex.printStackTrace();
// Rolling back the changes to make the data …Run Code Online (Sandbox Code Playgroud) 如何让 Maven/SureFire 生成 HTML 测试报告而不是 XML 测试报告?适用于 SureFire、PMD 和其他质量控制工具。
所以它看起来像这里的那些。
我正在 Elastic Beanstalk 中运行 Spring Boot 应用程序。我发现探索 Elastic Beanstalk 中的日志有些不直观。我只看到 2 个选项,下载所有日志或最后 100 行,其中包含我的应用程序和运行 Elastic Beanstalk 的 EC2 实例的日志。有没有办法查看我的应用程序日志(相同的日志)我在运行应用程序时在本地计算机中看到)而不限于最后 100 行和其他噪音,或者每次都必须下载所有日志?
logging amazon-web-services spring-boot amazon-elastic-beanstalk