Feignのコーデック使用
5190 ワード
一JSONエンコーダの使用
1サービス側のコントローラの作成
2クライアントインタフェースの作成
3試験方法の作成
4サービス・エンドの起動
5テスト結果
success, id: 1
二XMLの符号化と復号化
1サービス側作成
2クライアントインタフェースの作成
3クライアント依存度の増加
4 Resultの作成
5試験方法の作成
6サービスの開始
7テスト
クライアント出力
success
サービス側出力
angus-1
1サービス側のコントローラの作成
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyRestController {
@RequestMapping(value = "/person/create", method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE)
public String createPerson(@RequestBody Person p) {
System.out.println(p.getName() + "---" + p.getAge());
return "success, id: " + p.getId();
}
}
2クライアントインタフェースの作成
package org.crazyit.cloud;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import feign.Headers;
import feign.Param;
import feign.RequestLine;
public interface HelloClient {
@RequestLine("POST /person/createXML")
@Headers("Content-Type: application/xml")
public Result createXMLPerson(Person p);
}
3試験方法の作成
package org.crazyit.cloud;
import feign.Feign;
import feign.gson.GsonEncoder;
public class JsonTest {
public static void main(String[] args) {
HelloClient client = Feign.builder()
.encoder(new GsonEncoder())
.target(HelloClient.class,
"http://localhost:8080");
Person p = new Person();
p.setAge(33);
p.setId(1);
p.setName("angus");
String result = client.createPerson(p);
System.out.println(result);
}
}
4サービス・エンドの起動
5テスト結果
success, id: 1
二XMLの符号化と復号化
1サービス側作成
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyRestController {
/**
* XML
*/
@RequestMapping(value = "/person/createXML", method = RequestMethod.POST,
consumes = MediaType.APPLICATION_XML_VALUE,
produces = MediaType.APPLICATION_XML_VALUE)
public String createXMLPerson(@RequestBody Person person) {
System.out.println(person.getName() + "-" + person.getId());
return "success ";
}
}
2クライアントインタフェースの作成
package org.crazyit.cloud;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import feign.Headers;
import feign.Param;
import feign.RequestLine;
public interface HelloClient {
@RequestLine("POST /person/createXML")
@Headers("Content-Type: application/xml")
public Result createXMLPerson(Person p);
}
3クライアント依存度の増加
io.github.openfeign
feign-jaxb
9.5.0
javax.xml.bind
jaxb-api
2.2.8
4 Resultの作成
package org.crazyit.cloud;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@XmlRootElement
public class Result {
@XmlElement
private String message;
@XmlTransient
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
5試験方法の作成
package org.crazyit.cloud;
import feign.Feign;
import feign.jaxb.JAXBContextFactory;
import feign.jaxb.JAXBDecoder;
import feign.jaxb.JAXBEncoder;
public class XmlTest {
public static void main(String[] args) {
JAXBContextFactory jaxbFactory = new JAXBContextFactory.Builder().build();
//
HelloClient client = Feign.builder()
.encoder(new JAXBEncoder(jaxbFactory))
.decoder(new JAXBDecoder(jaxbFactory))
.target(HelloClient.class, "http://localhost:8080/");
//
Person p = new Person();
p.setId(1);
p.setName("angus");
p.setAge(33);
//
Result result = client.createXMLPerson(p);
System.out.println(result.getMessage());
}
}
6サービスの開始
7テスト
クライアント出力
success
サービス側出力
angus-1