怎样在 Azure 应用服务中生成和部署 Java API 应…
2018-06-22 07:22:34来源:未知 阅读 ()
先决条件
- Java 开发人员工具包 8(或更高版本)
- 已在开发计算机上安装 Maven
- 已在开发计算机上安装 Git
- Azure 订阅付费版或试用版
- HTTP 测试应用程序,如 Postman
使用 Swagger.IO 创建 API 基架
使用 swagger.io 在线编辑器可以输入表示 API 结构的 Swagger JSON 或 YAML 代码。设计 API 外围应用后,可以针对各种不同的平台和框架导出代码。在下一部分,我们将修改基架代码,包含模拟功能。
本演示从粘贴到 swagger.io 编辑器中的 Swagger JSON 正文开始,接着使用该正文来生成利用 JAX-RS 访问 REST API 终结点的代码。然后,将编辑基架代码来返回模拟数据,以便模拟一个构建在数据持久性机制基础上的 REST API。
-
将以下 Swagger JSON 代码复制到剪贴板:
{ "swagger": "2.0", "info": { "version": "v1", "title": "Contact List", "description": "A Contact list API based on Swagger and built using Java" }, "host": "localhost", "schemes": [ "http", "https" ], "basePath": "/api", "paths": { "/contacts": { "get": { "tags": [ "Contact" ], "operationId": "contacts_get", "consumes": [], "produces": [ "application/json", "text/json" ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/Contact" } } } }, "deprecated": false } }, "/contacts/{id}": { "get": { "tags": [ "Contact" ], "operationId": "contacts_getById", "consumes": [], "produces": [ "application/json", "text/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/Contact" } } } }, "deprecated": false } } }, "definitions": { "Contact": { "type": "object", "properties": { "Id": { "format": "int32", "type": "integer" }, "Name": { "type": "string" }, "EmailAddress": { "type": "string" } } } } }
- 导航到在线 Swagger 编辑器。在该位置,单击“文件”->“粘贴 JSON”菜单项。
- 粘贴前面复制的联系人列表 API Swagger JSON。
- 查看编辑器中显示的文档页和 API 摘要。
- 择“生成服务器”->“JAX RS”菜单选项,创建服务器端代码的基架,稍后要编辑该代码来添加模拟实现。
- 生成代码后,系统会提供要下载的 ZIP 文件。此文件包含 Swagger 代码生成器创建了基架的代码,以及所有关联的生成脚本。将整个库解压缩到开发工作站上的某个目录。
-
编辑代码以添加 API 实现
在本部分,将 Swagger 所生成代码的服务器端实现替换为自定义代码。新代码将 Contact 实体的 ArrayList 返回给调用方客户端。
-
使用 Visual Studio Code 或偏好的文本编辑器,打开位于 src/gen/java/io/swagger/model 文件夹中的 Contact.java 模型文件。
-
将以下构造函数添加到 Contact 类。
public Contact(Integer id, String name, String email) { this.id = id; this.name = name; this.emailAddress = email; }
-
使用 Visual Studio Code 或偏好的文本编辑器,打开位于 src/main/java/io/swagger/api/impl 文件夹中的 ContactsApiServiceImpl.java 服务实现文件。
-
使用新代码覆盖文件中的代码,将模拟实现添加到服务代码。
package io.swagger.api.impl; import io.swagger.api.*; import io.swagger.model.*; import com.sun.jersey.multipart.FormDataParam; import io.swagger.model.Contact; import java.util.*; import io.swagger.api.NotFoundException; import java.io.InputStream; import com.sun.jersey.core.header.FormDataContentDisposition; import com.sun.jersey.multipart.FormDataParam; import javax.ws.rs.core.Response; import javax.ws.rs.core.SecurityContext; @javax.annotation.Generated(value = "class io.swagger.codegen.languages.JaxRSServerCodegen", date = "2015-11-24T21:54:11.648Z") public class ContactsApiServiceImpl extends ContactsApiService { private ArrayList<Contact> loadContacts() { ArrayList<Contact> list = new ArrayList<Contact>(); list.add(new Contact(1, "Barney Poland", "barney@contoso.com")); list.add(new Contact(2, "Lacy Barrera", "lacy@contoso.com")); list.add(new Contact(3, "Lora Riggs", "lora@contoso.com")); return list; } @Override public Response contactsGet(SecurityContext securityContext) throws NotFoundException { ArrayList<Contact> list = loadContacts(); return Response.ok().entity(list).build(); } @Override public Response contactsGetById(Integer id, SecurityContext securityContext) throws NotFoundException { ArrayList<Contact> list = loadContacts(); Contact ret = null; for(int i=0; i<list.size(); i++) { if(list.get(i).getId() == id) { ret = list.get(i); } } return Response.ok().entity(ret).build(); } }
- 打开命令提示符,将目录切换到应用程序的根文件夹。
- 执行以下 Maven 命令生成代码,然后在本地使用 Jetty 应用服务器运行该代码。
mvn package jetty:run
- 应会在命令窗口中看到 Jetty 已经在端口 8080 上启动代码。
- 使用 Postman 对 http://localhost:8080/api/contacts 中的“get all contacts”API 方法发出请求。
- 用 Postman 对 http://localhost:8080/api/contacts/2 中的“get specific contact”API 方法发出请求。
- 最后,在控制台中执行以下 Maven 命令来生成 Java WAR(Web 存档)文件。
mvn package war:war
- 生成的 WAR 文件将放入 target 文件夹。导航到 target 文件夹,然后将 WAR 文件重命名为 ROOT.war。(请确保大小写符合此格式)。
rename swagger-jaxrs-server-1.0.0.war ROOT.war
- 最后,从应用程序的根文件夹执行以下命令创建 deploy 文件夹,用于将 WAR 文件部署到 Azure。
mkdir deploy mkdir deploy\webapps copy target\ROOT.war deploy\webapps cd deploy
考虑到篇幅问题,有兴趣的朋友可以通过这个链接来查看后续步骤。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 怎样在ASP.NET中使用Ajax 2019-10-18
- 在 Azure WebApps 中运行64位 Asp.net Core 应用 2018-06-22
- Azure 应用服务中的 API 应用、ASP.NET 和 Swagger 入门 2018-06-22
- 大型网站架构演进(4)使用应用服务器集群 2018-06-22
- 大型网站架构演进(2)数据库与应用服务器分离 2018-06-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash