美文网首页JAVA开发实习生日志
写一个代替postman的东西测试之前accessing-dat

写一个代替postman的东西测试之前accessing-dat

作者: 小丑皇_0624 | 来源:发表于2021-07-26 21:48 被阅读0次

写一个代替postman的端口测试之前accessing-data-mysql-0.0.1-SNAPSHOT.jar


之前的文件:

https://www.jianshu.com/p/4820e5f7729c


官网地址:

https://spring.io/guides/gs/consuming-rest/


初始代码分析:

用RestTemplate获取指定url返回的数据,并以绑定的数据类型转化。

packagecom.example.consumingrest;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.boot.CommandLineRunner;

importorg.springframework.boot.SpringApplication;

importorg.springframework.boot.autoconfigure.SpringBootApplication;

importorg.springframework.boot.web.client.RestTemplateBuilder;

importorg.springframework.context.annotation.Bean;

importorg.springframework.web.client.RestTemplate;

@SpringBootApplication

publicclassConsumingRestApplication{

privatestaticfinalLoggerlog=LoggerFactory.getLogger(ConsumingRestApplication.class);

publicstaticvoidmain(String[]args) {

    SpringApplication.run(ConsumingRestApplication.class,args);

}

@Bean

publicRestTemplaterestTemplate(RestTemplateBuilderbuilder) {

    returnbuilder.build();

}

@Bean

publicCommandLineRunnerrun(RestTemplaterestTemplate)throwsException{

    returnargs->{

        Quotequote=restTemplate.getForObject(

                "https://quoters.apps.pcfone.io/api/random",Quote.class);

        log.info(quote.toString());

    };

}


脚注:

[@SpringBootApplication] 开启自动配置

[LoggerFactory.getLogger(ConsumingRestApplication.class);] 在控制台打印ConsumingRestApplication.class类的日志。

[builder.build()] 使用 RestTemplateBuilder.build() 代替 new RestTemplate()


写一个存数据的类(官网上分了两层)

第一层:

packagecom.example.consumingrest;

importcom.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)

publicclassQuote{

privateStringtype;

privateValuevalue;

publicQuote() {

  }

publicStringgetType() {

returntype;

  }

publicvoidsetType(Stringtype) {

this.type=type;

  }

publicValuegetValue() {

returnvalue;

  }

publicvoidsetValue(Valuevalue) {

this.value=value;

  }

@Override

publicStringtoString() {

return"Quote{"+

"type='"+type+'\''+

", value="+value+

'}';

  }

}

脚注:

[@JsonIgnoreProperties(ignoreUnknown = true)] class中忽视所有没写的属性(properties)


第二层:

packagecom.example.consumingrest;

importcom.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)

publicclassValue{

privateLongid;

privateStringquote;

publicValue() {

  }

publicLonggetId() {

returnthis.id;

  }

publicStringgetQuote() {

returnthis.quote;

  }

publicvoidsetId(Longid) {

this.id=id;

  }

publicvoidsetQuote(Stringquote) {

this.quote=quote;

  }

@Override

publicStringtoString() {

return"Value{"+

"id="+id+

", quote='"+quote+'\''+

'}';

  }

}


要改的部分:

url

url改成我要调用的,而不是官网给的default版本。


返回的数据格式

由于这里的schema,输出的数据格式时json。json文件中的键值对改成我要调用的url的输出的格式。


我的核心代码:

目标:实现 accessing-data-mysql-0.0.1-SNAPSHOT.jar中增删改查的postman所做的事。


以get方法显示所有用户信息的功能。

由于显示所有用户信息,所以现实的是一个List,也就是一个数组。

@Bean

publicCommandLineRunnerrun(RestTemplaterestTemplate)throwsException{

returnargs->{

Quote[]quotes=restTemplate.getForObject(

"http://192.168.4.31:18001/user/all",Quote[].class);

assertquotes!=null;

log.info(Arrays.toString(quotes));

  };

}

写一个存数据的类(官网上给了两层来存数据,我这边只用一层)

由于显示所有用户信息,所以现实的是一个List,也就是一个数组。

packagecom.example.consumingrest;

importcom.fasterxml.jackson.annotation.JsonIgnoreProperties;

importjava.util.ArrayList;

importjava.util.List;

@JsonIgnoreProperties(ignoreUnknown=true)

publicclassQuote{

privateIntegerid;

privateStringname;

privateStringemail;

publicQuote() {

   }

publicIntegergetId() {

returnid;

   }

publicvoidsetId(Integerid) {

this.id=id;

   }

publicStringgetName() {

returnname;

   }

publicvoidsetName(Stringname) {

this.name=name;

   }

publicStringgetEmail() {

returnemail;

   }

publicvoidsetEmail(Stringemail) {

this.email=email;

   }

@Override

publicStringtoString() {

return"Quote{"+

"id="+id+

"name="+name+

"email="+email+'\''+

'}';

   }

}

脚注:

[@JsonIgnoreProperties(ignoreUnknown = true)] class中忽视所有没写的属性(properties)


以post方法添加用户信息

//  private static final Logger log = LoggerFactory.getLogger(ConsumingRestApplication.class);

@Bean

publicStringrun(RestTemplaterestTemplate)throwsException{

Stringurl="http://192.168.4.31:18001/user/add";

//headers

HttpHeadersrequestHeaders=newHttpHeaders();

requestHeaders.setContentType(MediaType.APPLICATION_JSON);

//body

//MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();

Map<String,String>requestBody=newHashMap();

requestBody.put("id","2");

requestBody.put("name","2");

requestBody.put("email","2");

//HttpEntity

HttpEntity<Map<String,String>>requestEntity=newHttpEntity<>(requestBody,requestHeaders);

//HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody, requestHeaders);

Strings=restTemplate.postForObject(url,requestEntity,String.class);

returns;

  };

脚注:

[requestHeaders.setContentType(MediaType.APPLICATION_JSON);] 设置请求的数据类型

[Map&lt;String, String&gt; requestBody = new HashMap();] 以hashmap来存输入的Body

[requestBody.put(&quot;id&quot;, &quot;2&quot;);] 加入键值对


今日小tip:

一个端口上只能最多存在一个进程,所以要在服务器上用 consuming-rest-0.0.1-SNAPSHOT.jar来测试 accessing-data-mysql-0.0.1-SNAPSHOT.jar时,要用不同的端口。

相关文章

网友评论

    本文标题:写一个代替postman的东西测试之前accessing-dat

    本文链接:https://www.haomeiwen.com/subject/yfzgmltx.html