【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)