成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot2發(fā)布調(diào)用REST服務(wù)實(shí)現(xiàn)方法

瀏覽:252日期:2023-09-09 09:26:51

開發(fā)環(huán)境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1.8

一、發(fā)布REST服務(wù)

1、IDEA新建一個(gè)名稱為rest-server的Spring Boot項(xiàng)目

2、新建一個(gè)實(shí)體類User.java

package com.example.restserver.domain;public class User { String name; Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}

3、新建一個(gè)控制器類 UserController.java

package com.example.restserver.web;import com.example.restserver.domain.User;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController { @RequestMapping(value='/user/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user(@PathVariable String name) { User u = new User(); u.setName(name); u.setAge(30); return u; }}

項(xiàng)目結(jié)構(gòu)如下:

Spring Boot2發(fā)布調(diào)用REST服務(wù)實(shí)現(xiàn)方法

訪問http://localhost:8080/user/lc,頁面顯示:

{'name':'lc','age':30}

二、使用RestTemplae調(diào)用服務(wù)

1、IDEA新建一個(gè)名稱為rest-client的Spring Boot項(xiàng)目

2、新建一個(gè)含有main方法的普通類RestTemplateMain.java,調(diào)用服務(wù)

package com.example.restclient;import com.example.restclient.domain.User;import org.springframework.web.client.RestTemplate;public class RestTemplateMain { public static void main(String[] args){ RestTemplate tpl = new RestTemplate(); User u = tpl.getForObject('http://localhost:8080/user/lc', User.class); System.out.println(u.getName() + ',' + u.getAge()); }}

右鍵Run ’RestTemplateMain.main()’,控制臺(tái)輸出:lc,30

3、在bean里面使用RestTemplate,可使用RestTemplateBuilder,新建類UserService.java

package com.example.restclient.service;import com.example.restclient.domain.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.web.client.RestTemplateBuilder;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Service;import org.springframework.web.client.RestTemplate;@Servicepublic class UserService { @Autowired private RestTemplateBuilder builder; @Bean public RestTemplate restTemplate(){ return builder.rootUri('http://localhost:8080').build(); } public User userBuilder(String name){ User u = restTemplate().getForObject('/user/' + name, User.class); return u; }}

4、編寫一個(gè)單元測(cè)試類,來測(cè)試上面的UserService的bean。

package com.example.restclient.service;import com.example.restclient.domain.User;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)public class UserServiceTest { @Autowired private UserService userService; @Test public void testUser(){ User u = userService.userBuilder('lc'); Assert.assertEquals('lc', u.getName()); }}

5、控制器類UserController.cs 中調(diào)用

配置在application.properties 配置端口和8080不一樣,如server.port = 9001

@Autowired private UserService userService; @RequestMapping(value='/user/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user(@PathVariable String name) { User u = userService.userBuilder(name); return u; }

三、使用Feign調(diào)用服務(wù)

繼續(xù)在rest-client項(xiàng)目基礎(chǔ)上修改代碼。

1、pom.xml添加依賴

<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-core</artifactId> <version>9.5.0</version> </dependency> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-gson</artifactId> <version>9.5.0</version> </dependency>

2、新建接口UserClient.java

package com.example.restclient.service;import com.example.restclient.domain.User;import feign.Param;import feign.RequestLine;public interface UserClient { @RequestLine('GET /user/{name}') User getUser(@Param('name')String name);}

3、在控制器類UserController.java 中調(diào)用

decoder(new GsonDecoder()) 表示添加了解碼器的配置,GsonDecoder會(huì)將返回的JSON字符串轉(zhuǎn)換為接口方法返回的對(duì)象。相反的,encoder(new GsonEncoder())則是編碼器,將對(duì)象轉(zhuǎn)換為JSON字符串。

@RequestMapping(value='/user2/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user2(@PathVariable String name) { UserClient service = Feign.builder().decoder(new GsonDecoder()) .target(UserClient.class, 'http://localhost:8080/'); User u = service.getUser(name); return u; }

4、優(yōu)化第3步代碼,并把請(qǐng)求地址放到配置文件中。

(1)application.properties 添加配置

復(fù)制代碼 代碼如下:application.client.url = http://localhost:8080

(2)新建配置類ClientConfig.java

package com.example.restclient.config;import com.example.restclient.service.UserClient;import feign.Feign;import feign.gson.GsonDecoder;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class ClientConfig { @Value('${application.client.url}') private String clientUrl; @Bean UserClient userClient(){ UserClient client = Feign.builder().decoder(new GsonDecoder()).target(UserClient.class, clientUrl); return client; }}

(3)控制器 UserController.java 中調(diào)用

@Autowired private UserClient userClient; @RequestMapping(value='/user3/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user3(@PathVariable String name) { User u = userClient.getUser(name); return u; }

UserController.java最終內(nèi)容:

package com.example.restclient.web;import com.example.restclient.domain.User;import com.example.restclient.service.UserClient;import com.example.restclient.service.UserService;import feign.Feign;import feign.gson.GsonDecoder;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.http.MediaType;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController { @Autowired private UserService userService; @Autowired private UserClient userClient; @RequestMapping(value='/user/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user(@PathVariable String name) { User u = userService.userBuilder(name); return u; } @RequestMapping(value='/user2/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user2(@PathVariable String name) { UserClient service = Feign.builder().decoder(new GsonDecoder()) .target(UserClient.class, 'http://localhost:8080/'); User u = service.getUser(name); return u; } @RequestMapping(value='/user3/{name}', produces = MediaType.APPLICATION_JSON_VALUE) public User user3(@PathVariable String name) { User u = userClient.getUser(name); return u; }}

項(xiàng)目結(jié)構(gòu)

Spring Boot2發(fā)布調(diào)用REST服務(wù)實(shí)現(xiàn)方法

先后訪問下面地址,可見到輸出正常結(jié)果

http://localhost:9001/user/lchttp://localhost:9001/user2/lc2http://localhost:9001/user3/lc3

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
91麻豆国产在线观看| 欧美chengren| 日韩一区二区精品在线观看| 成人小视频在线| 亚洲理论在线| 国产精品初高中害羞小美女文| 成人va在线观看| 欧美一卡在线观看| 日韩精品一二三| 国产伦精品一区二区三区视频孕妇| 国产精品国产三级国产aⅴ无密码| 不卡的看片网站| 欧美一区二区三区思思人| 美腿丝袜亚洲一区| 色欧美88888久久久久久影院| 亚洲激情六月丁香| 成人在线综合网| 日韩精品中文字幕在线一区| 精品一区二区三区久久| 欧美性色黄大片手机版| 7777精品伊人久久久大香线蕉超级流畅 | 在线电影一区| 中文字幕一区在线| 在线观看一区视频| 国产精品久久久久影院色老大| 欧美激情五月| 中文字幕一区二区视频| 国产综合网站| 亚洲卡通动漫在线| 亚洲欧美视频一区二区三区| 日韩精品欧美精品| 在线免费观看日本一区| 久久精品久久久精品美女| 欧美综合天天夜夜久久| 久久99国内精品| 欧美图区在线视频| 国产一二三精品| 日韩一级免费一区| av亚洲精华国产精华精华| 日韩丝袜情趣美女图片| 国产99久久久国产精品潘金 | 亚洲在线观看免费视频| 性感少妇一区| 麻豆成人免费电影| 欧美日高清视频| 成人一区二区三区在线观看| 久久久99精品久久| 欧美日韩精品免费观看视一区二区 | 欧美精品一区二区三区四区| 女人香蕉久久**毛片精品| 亚洲国产高清aⅴ视频| 最新日韩av| 亚洲成人在线观看视频| 在线免费视频一区二区| 福利一区二区在线| 国产精品日产欧美久久久久| 一区二区福利| 美女被吸乳得到大胸91| 欧美mv日韩mv国产网站| 国模精品娜娜一二三区| 亚洲v中文字幕| 56国语精品自产拍在线观看| 91影院在线观看| 有码一区二区三区| 欧美自拍丝袜亚洲| 国产成人在线色| 久久蜜桃一区二区| 黄色日韩精品| 日韩国产一区二| 欧美成人伊人久久综合网| 欧美在线二区| 亚洲国产成人av网| 欧美精品欧美精品系列| youjizz国产精品| 一本色道久久综合亚洲精品不卡 | 丁香五精品蜜臀久久久久99网站| 国产区在线观看成人精品| 国产色综合网| 国产乱子伦一区二区三区国色天香| 久久久久综合网| 国产东北露脸精品视频| 国产精品国产精品国产专区不蜜 | 国产精品欧美精品| 在线一区二区三区四区| 欧美一区二区观看视频| 亚洲一区在线直播| 91在线精品一区二区三区| 欧美激情一区二区三区不卡| 国产精品日韩欧美一区二区三区| 成人精品免费网站| 夜夜夜精品看看| 制服丝袜国产精品| 亚洲一区自拍| 99re成人在线| 成人免费黄色在线| 日本一区二区成人在线| 777xxx欧美| 日本中文字幕一区二区有限公司| 一本色道久久综合亚洲精品不| 白白色亚洲国产精品| 福利一区二区在线| 日本不卡高清视频| 国产欧美一区二区精品久导航| 欧美片网站免费| 成人av资源网站| 国产精品一区二区久久精品爱涩 | 欧美极品aⅴ影院| 精品一区二区三区的国产在线播放| 一区二区三区在线播放| 欧美不卡在线视频| 国产综合18久久久久久| 美女网站色91| 国产精品每日更新在线播放网址| 国产精品日韩二区| av激情成人网| 肉丝袜脚交视频一区二区| 国产人久久人人人人爽| 在线观看欧美精品| 欧美日韩在线不卡一区| 美女一区二区三区| 成人欧美一区二区三区小说 | 国产三级精品在线不卡| 国产成人精品免费看| 亚洲精品国产a久久久久久 | 波多野结衣中文一区| 亚洲一级二级在线| 欧美成人高清电影在线| 男人的天堂亚洲在线| 一区二区三区在线视频免费观看 | 久久毛片高清国产| 日本一区二区三区四区在线视频 | 在线看不卡av| 一本色道久久综合亚洲91| 日本高清视频一区二区| 香蕉久久夜色精品| 久久综合一区| 久久久精品黄色| 亚洲一区二区视频在线| 日韩二区三区在线观看| 国产午夜亚洲精品午夜鲁丝片 | 成人永久免费视频| 欧美精品日韩| 在线成人欧美| 香蕉久久夜色精品| 精品视频1区2区| 中文成人综合网| 国产精品自拍在线| 亚洲愉拍自拍另类高清精品| 精品裸体舞一区二区三区| 91激情在线视频| 一区二区在线不卡| 一区二区三区四区在线| 国产曰批免费观看久久久| 久久av资源网| jvid福利写真一区二区三区| 99精品国产高清一区二区| 欧美精品一区二区三区在线播放| 91国偷自产一区二区三区成为亚洲经典 | 欧美一区二区在线免费观看| 一本一道久久综合狠狠老精东影业 | 国产精品夜夜嗨| 亚洲高清免费视频| 国产精品理论在线观看| 日韩欧美国产综合一区 | 久久精品一二三| 欧美情侣在线播放| 久久综合一区| 国产精品丝袜xxxxxxx| 午夜视频一区| 成人黄色网址在线观看| 久久激情五月婷婷| 亚洲午夜一区二区三区| 国产精品久久久久婷婷| 精品福利av导航| 欧美精品一卡两卡| 欧美亚洲综合久久| 亚洲永久在线| 亚洲精品欧洲| 欧美日韩国产探花| 欧美成人一区二区在线| 国产高清在线精品| 国产在线一区观看| 久久福利资源站| 99精品国产热久久91蜜凸| 粉嫩绯色av一区二区在线观看| 激情欧美日韩一区二区| 午夜久久久久久久久久一区二区| 亚洲欧美综合色| 国产精品人成在线观看免费| 欧美精品一区二区精品网| 91精品国产高清一区二区三区蜜臀 | 99re成人在线| 91小视频免费观看| jlzzjlzz欧美大全| 波多野结衣在线aⅴ中文字幕不卡| 成人午夜av电影| 成人av网址在线| 国产盗摄视频一区二区三区| 狂野欧美性猛交blacked| 日本欧美一区二区三区乱码|