21天转型微服务: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"

}

1552545034997736.png

购买华为云请点击立即购买

转载于:https://my.oschina.net/u/4146431/blog/3060200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值