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

课程准备:
Demo下载:
点击下载settings.zip,解压获得settings.xml
一、Maven工程还原
1、首先是Maven Projects的还原Demo-Day2的工程


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


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

然后大家在这里就有问题了,Maven的工程还原有问题,我们需要借助课程提供的maven setting文件进行配置
点击下载settings.zip,解压获得settings.xml
进而导入CSEJavaSDK的依赖

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


这里我们勾选中Force Update of Snapshots/Releases 然后点击OK,等待还原
二、AK/SK的获取及yaml文件的调整
1、AK/SK的获取
我们登录华为云控制台,然后找到【我的凭证】,管理访问密钥,新增即可
然后我们下载会得到一个csv文件,里面就是我们的AK/SK了

2、yaml文件的调整
打开工程中的microservice.yaml文件

将对应的AK和SK改成自己的即可
其实到这里就可以运行了,这里我们做一下测试,打开AppMain.java右键Run As ——>Jave Application

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


三、在 provider 服务中开发 greeting
1、新建GreetingResponse.java
作为返回值的GreetingResponse类
在microservice.demo.training21days.provider.service包里新建GreetingResponse.java类

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即可

这时我们看到greeting这个接口已经过来了
我们借助PostMan进行本地调用
POST调用 http://127.0.0.1:8080/provider/v0/greeting
在Body中输入JSON格式数据
例如
{
"name":"JaneConan",
"gender":"MALE"
}

- 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)