【21天转型微服务】day2实操手册

JaneConan 发表于 2019/03/14 13:31:08 2019/03/14
【摘要】 主要分享一下微服务day2的基本操作及关键点

WechatIMG1046.jpeg


课程准备:

Demo下载:

点击下载Demo-Day2.zip

点击下载settings.zip,解压获得settings.xml

点击下载Demo-Day2-Homework.zip

一、Maven工程还原

1、首先是Maven Projects的还原Demo-Day2的工程


屏幕快照 2019-03-14 13.25.16.png



屏幕快照 2019-03-14 13.27.48.png


这里我们选择解压后的Demo文件目录


屏幕快照 2019-03-14 13.28.41.png


屏幕快照 2019-03-14 13.33.13.png

全选后,点击finish,我们就把需要的工程导入进来了

屏幕快照 2019-03-14 13.34.51.png


然后大家在这里就有问题了,Maven的工程还原有问题,我们需要借助课程提供的maven setting文件进行配置

点击下载settings.zip,解压获得settings.xml

进而导入CSEJavaSDK的依赖


屏幕快照 2019-03-14 13.37.11.png


这样我们就可以临时的将settings.xml作为临时的全局settings进行还原了


右键工程,进行还原

屏幕快照 2019-03-14 13.39.19.png


屏幕快照 2019-03-14 13.39.33.png

这里我们勾选中Force Update of Snapshots/Releases 然后点击OK,等待还原


二、AK/SK的获取及yaml文件的调整

1、AK/SK的获取

我们登录华为云控制台,然后找到【我的凭证】,管理访问密钥,新增即可

然后我们下载会得到一个csv文件,里面就是我们的AK/SK了

屏幕快照 2019-03-14 13.45.39.png


2、yaml文件的调整

打开工程中的microservice.yaml文件

屏幕快照 2019-03-14 13.43.45.png

将对应的AK和SK改成自己的即可


其实到这里就可以运行了,这里我们做一下测试,打开AppMain.java右键Run As ——>Jave Application

屏幕快照 2019-03-14 13.58.08.png


然后到华为云CSE控制台,我们发现今天的Demo已经在线了


屏幕快照 2019-03-14 14.00.12.png



屏幕快照 2019-03-14 13.59.44.png


三、在 provider 服务中开发 greeting 

1、新建GreetingResponse.java

作为返回值的GreetingResponse

在microservice.demo.training21days.provider.service包里新建GreetingResponse.java类

屏幕快照 2019-03-14 14.02.57.png

package microservice.demo.training21days.provider.service;

import java.util.Date;

public class GreetingResponse {
  private String msg;

  private Date timestamp;

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }

  public Date getTimestamp() {
    return timestamp;
  }

  public void setTimestamp(Date timestamp) {
    this.timestamp = timestamp;
  }

  @Override
  public String toString() {
    final StringBuilder sb = new StringBuilder("GreetingResponse{");
    sb.append("msg='").append(msg).append('\'');
    sb.append(", timestamp=").append(timestamp);
    sb.append('}');
    return sb.toString();
  }
}


2、新建Person.java

创建作为请求的Person

package microservice.demo.training21days.provider.service;

public class Person {
  private String name;

  private Gender gender;

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public Gender getGender() {
    return gender;
  }

  public void setGender(Gender gender) {
    this.gender = gender;
  }

  @Override
  public String toString() {
    final StringBuilder sb = new StringBuilder("Person{");
    sb.append("name='").append(name).append('\'');
    sb.append(", gender=").append(gender);
    sb.append('}');
    return sb.toString();
  }
}

3、新建Gender.java

Gender枚举类型

package microservice.demo.training21days.provider.service;

public enum Gender {
  MALE,
  FEMALE
}


4、HelloService中创建greeting方法


这里注意别忘了import引用


package microservice.demo.training21days.provider.service;

import java.util.Date;

import org.apache.servicecomb.provider.rest.common.RestSchema;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RestSchema(schemaId = "hello")        // 该注解声明这是一个REST接口类,CSEJavaSDK会扫描到这个类,根据它的代码生成接口契约
@RequestMapping(path = "/provider/v0") // @RequestMapping是Spring的注解,这里在使用Spring MVC风格开发REST接口
public class HelloService {
  @RequestMapping(path = "/hello/{name}", method = RequestMethod.GET)
  public String sayHello(@PathVariable(value = "name") String name) {
    return "Hello," + name;
  }
  
  @PostMapping(path = "/greeting")
  public GreetingResponse greeting(@RequestBody Person person) {
    GreetingResponse greetingResponse = new GreetingResponse();

    if (Gender.MALE.equals(person.getGender())) {
      greetingResponse.setMsg("Hello, Mr." + person.getName());
    } else {
      greetingResponse.setMsg("Hello, Ms." + person.getName());
    }
    greetingResponse.setTimestamp(new Date());

    return greetingResponse;
  }
}


5、运行provider服务并进行调用


好了,到这里如果我们直接运行,就会报错,因为之前的服务契约【其实就是WebApi】不同

也就是教程里说的

【直接启动有可能会因为与服务中心里记录的服务契约不一致而报错,此时可以考 虑删除服务中心内的provider服务记录,或升级provider服务的版本。】

所以我们把CSE控制台里的provider服务删除,再次运行AppMain.java即可


屏幕快照 2019-03-14 14.25.25.png


这时我们看到greeting这个接口已经过来了


我们借助PostMan进行本地调用


POST调用 http://127.0.0.1:8080/provider/v0/greeting

在Body中输入JSON格式数据


例如

{

"name":"JaneConan",

"gender":"MALE"

}


屏幕快照 2019-03-14 14.30.12.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。