MyException - 我的异常网
当前位置:我的异常网» .NET相关 » 怎么在 Azure 应用服务中生成和部署 Java API 应用

怎么在 Azure 应用服务中生成和部署 Java API 应用

www.MyException.Cn  网友分享于:2013-09-19  浏览:0次
怎样在 Azure 应用服务中生成和部署 Java API 应用

先决条件

  1. Java 开发人员工具包 8(或更高版本)
  2. 已在开发计算机上安装 Maven
  3. 已在开发计算机上安装 Git
  4. Azure 订阅付费版或试用
  5. HTTP 测试应用程序,如 Postman

使用 Swagger.IO 创建 API 基架

使用 swagger.io 在线编辑器可以输入表示 API 结构的 Swagger JSON 或 YAML 代码。设计 API 外围应用后,可以针对各种不同的平台和框架导出代码。在下一部分,我们将修改基架代码,包含模拟功能。

本演示从粘贴到 swagger.io 编辑器中的 Swagger JSON 正文开始,接着使用该正文来生成利用 JAX-RS 访问 REST API 终结点的代码。然后,将编辑基架代码来返回模拟数据,以便模拟一个构建在数据持久性机制基础上的 REST API。

  1. 将以下 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"
                    }
                }
            }
        }
    }

     

  2. 导航到在线 Swagger 编辑器。在该位置,单击“文件”->“粘贴 JSON”菜单项。
  3. 粘贴前面复制的联系人列表 API Swagger JSON。
  4. 查看编辑器中显示的文档页和 API 摘要。
  5. 择“生成服务器”->“JAX RS”菜单选项,创建服务器端代码的基架,稍后要编辑该代码来添加模拟实现。
  1. 生成代码后,系统会提供要下载的 ZIP 文件。此文件包含 Swagger 代码生成器创建了基架的代码,以及所有关联的生成脚本。将整个库解压缩到开发工作站上的某个目录。
  2. 编辑代码以添加 API 实现

在本部分,将 Swagger 所生成代码的服务器端实现替换为自定义代码。新代码将 Contact 实体的 ArrayList 返回给调用方客户端。

  1. 使用 Visual Studio Code 或偏好的文本编辑器,打开位于 src/gen/java/io/swagger/model 文件夹中的 Contact.java 模型文件。

  2. 将以下构造函数添加到 Contact 类。

    public Contact(Integer id, String name, String email) 
    {
        this.id = id;
        this.name = name;
        this.emailAddress = email;
    }
  3. 使用 Visual Studio Code 或偏好的文本编辑器,打开位于 src/main/java/io/swagger/api/impl 文件夹中的 ContactsApiServiceImpl.java 服务实现文件。

  4. 使用新代码覆盖文件中的代码,将模拟实现添加到服务代码。

    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();
        }
    }

     

  5. 打开命令提示符,将目录切换到应用程序的根文件夹。
  6. 执行以下 Maven 命令生成代码,然后在本地使用 Jetty 应用服务器运行该代码。
    mvn package jetty:run

     

  7. 应会在命令窗口中看到 Jetty 已经在端口 8080 上启动代码。
  8. 使用 Postmanhttp://localhost:8080/api/contacts 中的“get all contacts”API 方法发出请求。
  9. Postmanhttp://localhost:8080/api/contacts/2 中的“get specific contact”API 方法发出请求。
  10. 最后,在控制台中执行以下 Maven 命令来生成 Java WAR(Web 存档)文件。
    mvn package war:war

     

  11. 生成的 WAR 文件将放入 target 文件夹。导航到 target 文件夹,然后将 WAR 文件重命名为 ROOT.war。(请确保大小写符合此格式)。
    rename swagger-jaxrs-server-1.0.0.war ROOT.war

     

  12. 最后,从应用程序的根文件夹执行以下命令创建 deploy 文件夹,用于将 WAR 文件部署到 Azure。
    mkdir deploy
     mkdir deploy\webapps
     copy target\ROOT.war deploy\webapps
     cd deploy

     

考虑到篇幅问题,有兴趣的朋友可以通过这个链接来查看后续步骤。

 

文章评论

聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java程序员必看电影
Java程序员必看电影
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员和编码员之间的区别
程序员和编码员之间的区别
老程序员的下场
老程序员的下场
 程序员的样子
程序员的样子
代码女神横空出世
代码女神横空出世
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
我的丈夫是个程序员
我的丈夫是个程序员
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
我是如何打败拖延症的
我是如何打败拖延症的
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
编程语言是女人
编程语言是女人
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
每天工作4小时的程序员
每天工作4小时的程序员
总结2014中国互联网十大段子
总结2014中国互联网十大段子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员应该关注的一些事儿
程序员应该关注的一些事儿
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
旅行,写作,编程
旅行,写作,编程
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
鲜为人知的编程真相
鲜为人知的编程真相
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
为什么程序员都是夜猫子
为什么程序员都是夜猫子
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
那些争议最大的编程观点
那些争议最大的编程观点
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
中美印日四国程序员比较
中美印日四国程序员比较
程序员的鄙视链
程序员的鄙视链
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
漫画:程序员的工作
漫画:程序员的工作
如何成为一名黑客
如何成为一名黑客
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有