当前位置: 首页 > news >正文

淘宝客网站推广备案信息网络架构和网络拓扑的区别

淘宝客网站推广备案信息,网络架构和网络拓扑的区别,定制鞋子哪个网站好,网站建设与维护心得体会SpringBoot调用外部接口的几种方式 使用FeignClient调用1、在使用方引入依赖2、服务接口调用方2.1、在启动类上加上EnableFeigncliens注解2.2、编写Feign接口调用服务controller层2.3、服务接口调用service层 3、服务接口提供者4、说明 使用RestTemplate调用1、引入依赖2、Rest… SpringBoot调用外部接口的几种方式 使用FeignClient调用1、在使用方引入依赖2、服务接口调用方2.1、在启动类上加上EnableFeigncliens注解2.2、编写Feign接口调用服务controller层2.3、服务接口调用service层 3、服务接口提供者4、说明 使用RestTemplate调用1、引入依赖2、RestTemplateConfig配置类3、接口调用 使用WebClient调用1、引入依赖2、接口调用示例 使用Apache HttpClient调用使用HttpURLConnection调用使用OkHttp调用1、引入依赖2、示例代码 使用AsyncHttpClient调用1、引入依赖2、示例代码 使用FeignClient调用 FeignClient调用大多用于微服务开发中各服务之间的接口调用。它以Java接口注解的方式调用HTTP请求使服务间的调用变得简单1、在使用方引入依赖 !-- Feign注解 这里openFeign的版本要和自己使用的SpringBoot匹配-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId!-- version4.0.1/version -- /dependency2、服务接口调用方 2.1、在启动类上加上EnableFeigncliens注解 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients;SpringBootApplication EnableFeignClients public class StudyfeignApplication {public static void main(String[] args) {SpringApplication.run(StudyfeignApplication.class, args);System.out.println(项目启动成功);}}2.2、编写Feign接口调用服务controller层 import com.hysoft.studyfeign.service.SysUserClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(feign) public class SysUserController {Autowiredprivate SysUserClient sysUserClient;PostMapping(getUserId)public void getUserId(String userId){this.sysUserClient.getUserById(userId);}}2.3、服务接口调用service层 feign的客户端需要使用FeignClient注解进行表示这样扫描时才知道这是一个feign客户端。FeignClient最常用的就两个属性一个name用于给客户端定义一个唯一的名称另一个就是url用于定义该客户端调用的远程地址。url中的内容可以写在配置文件application.yml中便于管理Service FeignClient(name feign-service,url ${master-getuserbyId}) public interface SysUserClient {PostMapping(/master/test)String getUserById(String id);}application.yml中的配置如下 server:port: 8081 master-getuserbyId: http://localhost:80803、服务接口提供者 对于接口提供者来说没有特别要求和正常的接口开发一样4、说明 需要说明的是在接口调用方可以继续拓展service层书写service实现层进一步进行拓展 import org.springframework.stereotype.Service;Service public class SysUserClientImpl implements SysUserClient{Overridepublic String getUserById(String id) {return ;} }使用RestTemplate调用 RestTemplate中几个常用的方法getForObject()、getForEntity()、postForObject()、postForEntity()。其中getForObject() 和 getForEntity() 方法可以用来发送 GET 请求1、引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency2、RestTemplateConfig配置类 SimpleClientHttpRequestFactory类对应的HTTP库是JDK自带的HttpUrlConnection当然我们可以根据自身的需求使用其他的HTTP库例如HttpComponentsAsyncClientHttpRequestFactoryConfiguration public class RestTemplateConfig {Beanpublic RestTemplate restTemplate(ClientHttpRequestFactory factory){return new RestTemplate(factory);}Beanpublic ClientHttpRequestFactory simpleClientHttpRequestFactory(){SimpleClientHttpRequestFactory factory new SimpleClientHttpRequestFactory();factory.setReadTimeout(5000);//单位为msfactory.setConnectTimeout(5000);//单位为msreturn factory;} }3、接口调用 RestController public class TestRestTemplate {Resourceprivate RestTemplate restTemplate;GetMapping(value /saveUser)public void saveUser(String userId) {String url http://127.0.0.1:8080/master/test;Map map new HashMap();map.put(userId, hy001);String results restTemplate.postForObject(url, map, String.class);}}使用WebClient调用 Spring3.0引入了RestTemplate但是在后来的官方源码中介绍RestTemplate有可能在未来的版本中被弃用所谓替代RestTemplate在Spring5中引入了WebClient作为异步的非阻塞、响应式的HTTP客户端。1、引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webflux/artifactId /dependency2、接口调用示例 public class TestWebClient {Testpublic void doGet() {String userId 郭郭;String url http://127.0.0.1:8080/master/test/getSysUserById?userId{userId};MonoString mono WebClient//创建WebClient实例.create()//方法调用WebClient中提供了多种方法.get()//请求url.uri(url, userId)//获取响应结果.retrieve()//将结果转换为指定类型.bodyToMono(String.class);//返回最终结果block是阻塞的/subscribe()非阻塞式获取响应结果System.out.println(响应结果 mono.block());}Testpublic void doPost() {Map map new HashMap();map.put(name, 郭郭);String requestBody JSON.toJSONString(map);String url http://127.0.0.1:8080/master/test/saveUser;MonoString mono WebClient//创建WebClient实例.create()//方法调用WebClient中提供了多种方法.post()//请求url.uri(url)//指定请求的Content-Type为JSON.contentType(MediaType.APPLICATION_JSON)//使用bodyValue方法传递请求体.bodyValue(requestBody)//获取响应结果.retrieve()//将结果转换为指定类型.bodyToMono(String.class);//返回最终结果block是阻塞的/subscribe()非阻塞式获取响应结果System.out.println(响应结果 mono.block());} }在上述doPost请求中我们的请求接口入参是一个Map但是需要转换为JSON格式传递这是因为WebClient默认是使用JSON序列化的。使用Apache HttpClient调用 public class TestHttpClient {Testpublic void doGet() throws IOException {//步骤一创建httpClient实例CloseableHttpClient httpClient HttpClients.createDefault();//步骤二创建HTTP请求HttpGet httpGet new HttpGet(http://127.0.0.1:8094/masterdata/sysUser/getSysUserById?userId郭郭);//步骤三发送请求并获取响应数据CloseableHttpResponse response httpClient.execute(httpGet);//步骤四处理响应数据HttpEntity entity response.getEntity();String result EntityUtils.toString(entity);//步骤五关闭httpClient和responseresponse.close();httpClient.close();}Testpublic void doPost() throws IOException {//步骤一创建httpClient实例CloseableHttpClient httpClient HttpClients.createDefault();//步骤二创建HTTP请求HttpPost httpPost new HttpPost(http://127.0.0.1:8094/masterdata/sysUser/saveUser);//步骤三设置请求体数据使用JSON格式Map map new HashMap();map.put(name, 郭郭);String requestBody JSON.toJSONString(map);StringEntity stringEntity new StringEntity(requestBody, UTF-8);stringEntity.setContentType(application/json);httpPost.setEntity(stringEntity);//步骤四发送请求并获取响应数据CloseableHttpResponse response httpClient.execute(httpPost);//步骤五处理响应数据HttpEntity entity response.getEntity();String result EntityUtils.toString(entity);//步骤五关闭httpClient和responseresponse.close();httpClient.close();} }使用HttpURLConnection调用 public class TestHttpURLConnection {Testpublic void doGet() throws IOException {String userId 郭郭; // 参数值userId URLEncoder.encode(userId, UTF-8); // 对参数值进行URL编码//步骤一创建URL对象URL url new URL(http://127.0.0.1:8094/masterdata/sysUser/getSysUserById?userId userId);//步骤二打开连接HttpURLConnection conn (HttpURLConnection) url.openConnection();//步骤三设置请求方式conn.setRequestMethod(GET);//步骤四读取响应内容BufferedReader reader new BufferedReader(new InputStreamReader(conn.getInputStream()));StringBuilder sb new StringBuilder();String line;while ((line reader.readLine()) ! null) {sb.append(line);}reader.close();System.out.println(sb.toString());} Testpublic void doPost() throws IOException {//创建URL对象URL url new URL(http://127.0.0.1:8094/masterdata/sysUser/saveUser);//打开连接HttpURLConnection conn (HttpURLConnection) url.openConnection();//设置请求方式conn.setRequestMethod(POST);// 设置请求头conn.setRequestProperty(Content-Type, application/json);//启用输出流conn.setDoOutput(true);//设置请求体数据Map map new HashMap();map.put(name, 郭郭);String requestBody JSON.toJSONString(map);//发送请求体数据try (DataOutputStream outputStream new DataOutputStream(conn.getOutputStream())) {outputStream.write(requestBody.getBytes(StandardCharsets.UTF_8));}//读取响应内容BufferedReader reader new BufferedReader(new InputStreamReader(conn.getInputStream()));StringBuilder sb new StringBuilder();String line;while ((line reader.readLine()) ! null) {sb.append(line);}reader.close();System.out.println(sb.toString());} }使用OkHttp调用 1、引入依赖 !--okhttp依赖--dependencygroupIdcom.squareup.okhttp3/groupIdartifactIdokhttp/artifactIdversion4.0.0/version/dependency2、示例代码 public class TestOkHttp {Testpublic void doGet() throws IOException {OkHttpClient client new OkHttpClient();String url http://127.0.0.1:8080/master/test/getSysUserById?userId郭郭;Request request new Request.Builder().url(url).build();try (Response response client.newCall(request).execute()) {ResponseBody body response.body();System.out.println(body.string());}}Testpublic void doPost() throws IOException{OkHttpClient client new OkHttpClient();String url http://127.0.0.1:8080/master/test/saveUser;MediaType mediaType MediaType.get(application/json; charsetutf-8);//requestBody请求入参Map map new HashMap();map.put(name, admin);RequestBody requestBody RequestBody.create(mediaType, JSON.toJSONString(map));Request request new Request.Builder().url(url).post(requestBody).build();try (Response response client.newCall(request).execute()) {ResponseBody body response.body();System.out.println(body.string());}} }使用AsyncHttpClient调用 1、引入依赖 dependencygroupIdorg.asynchttpclient/groupIdartifactIdasync-http-client/artifactIdversion2.12.3/version /dependency2、示例代码 public class TestAsyncHttpClient {Testpublic void doGet() throws IOException {try (AsyncHttpClient client new DefaultAsyncHttpClient();) {BoundRequestBuilder requestBuilder client.prepareGet(http://127.0.0.1:8080/master/test/getSysUserById?userIdhy001);CompletableFutureString future requestBuilder.execute().toCompletableFuture().thenApply(Response::getResponseBody);//使用join等待响应完成String responseBody future.join();System.out.println(responseBody);}}Testpublic void doPost() throws IOException {try (AsyncHttpClient client new DefaultAsyncHttpClient();) {BoundRequestBuilder requestBuilder client.preparePost(http://127.0.0.1:8094/8080/master/test/saveUser);//requestBody请求入参Map map new HashMap();map.put(name, admin);String requestBody JSON.toJSONString(map);requestBuilder.addHeader(Content-Type, application/json);requestBuilder.setBody(requestBody);CompletableFutureString future requestBuilder.execute().toCompletableFuture().thenApply(Response::getResponseBody);//使用join等待响应完成String responseBody future.join();System.out.println(responseBody);}}}
http://www.w-s-a.com/news/464608/

相关文章:

  • 无极磁铁网站如何把地图放到自己做的网站上
  • 青浦赵巷网站建设公司网站开发需求文档
  • 苏州网站建设的公司哪家好无锡网站制作那些
  • 装饰公司网站模板科技成果鉴定机构
  • 给公司做的东西放到私人网站上十堰为企业做网站的单位
  • 手机网站建设价钱手机自己做网站
  • 网站建设属于哪种公司电子商务查询网站
  • 工程建设标准强制性条文最新版本网站关键词排名优化应该怎么做
  • 网站网页设计内容品牌高端网站建设公司
  • 网站开发报价 福州中国建筑网官网手机版
  • 网站 图片 自动往右移专门做定制化的网站
  • 最好用的cms手机百度关键词排名 网站优化软件
  • 凉山州城乡规划建设局网站长沙网站建设哪家强
  • 广州网站开发创意设计公司企业自己怎么制作网站首页
  • 曲靖 曲靖网站建设软件(app)开发wordpress 没有远程发布
  • 官方网站开发与定制网站建设技术是干嘛的
  • 昆明网站建设工作室网站菜单导航怎么做的
  • 南京网站做的好的公司猪八戒网站做推广怎么样
  • 建站收费标准福州网站搭建
  • 做防护用品的网站欧美网站建设风格特点
  • 龙华做网站联系电话北京软件开发培训班
  • 做网站运营有前途网站的建设与管理的心得体会
  • 河南网站推广怎么做网页制作免费下载
  • 网站如何屏蔽中国ip商丘网站建设的公司哪家好
  • 东莞广告公司东莞网站建设价格鹤壁哪有做网站的
  • 门户网站界面设计logo设计商标设计
  • 建设银行网站驱动宁波网站建设相信荣胜网络
  • 八里河网站建设项目建设可行性企业品牌推广方式有哪些
  • jsp网站开发之html入门知识广州服装设计公司
  • 做电商看的网站有哪些个人网页制作成品免费