Vérifiez l'utilisation de l'API sur le site suivant. https://zip-cloud.appspot.com/doc/api
Vérifiez les spécifications.
Basé sur https://zip-cloud.appspot.com/api/search --Paramètres de demande
Le nom du paramètre | nom de l'article | Obligatoire | Remarques |
---|---|---|---|
zipcode | Code postal | ○ | Numéro à 7 chiffres. Peut être avec des tirets. Recherche de correspondance exacte. |
callback | Nom de la fonction de rappel | - | Nom de la fonction de rappel lors de la sortie au format JSONP. UTF-Chaîne encodée en URL dans 8. |
limit | Nombre maximum | - | Nombre maximum d'articles retournés lorsque plusieurs articles existent avec le même code postal (nombre) * Par défaut: 20 |
Paramètres de réponse
Nom de domaine | nom de l'article | Remarques |
---|---|---|
status | statut | 200 est renvoyé lorsqu'il est normal et un code d'erreur est renvoyé lorsqu'une erreur se produit. |
message | message | Lorsqu'une erreur se produit, le contenu de l'erreur est renvoyé. |
results | zipcode(Code postal) prefcode(Code préfecture) address1(Nom des préfectures) address2(Nom de Ville) address3(Nom de la zone de la ville) kana1(Nom des préfecturesカナ) kana2 (Nom de Villeカナ) kana3(Nom de la zone de la villeカナ) |
S'il y en a plusieurs, ce sera un tableau |
(Exemple) Lors d'une recherche avec le code postal "7830060"
URL de demande
https://zip-cloud.appspot.com/api/search?zipcode=7830060
--Réponse
{
"message": null,
"results": [
{
"adresse1": "Hokkaido",
"address2": "Miuta City",
"adresse3": "Kyowa Kamimi Utamachi",
"kana1": "Hokkaidou",
"kana2": "Visiter",
"kana3": "Kamibi Byokyo Wow",
"prefcode": "1",
"zipcode": "0790177"
},
{
"adresse1": "Hokkaido",
"address2": "Miuta City",
"adresse3": "Kami Utacho Minami",
"kana1": "Hokkaidou",
"kana2": "Visiter",
"kana3": "Kamibibichominami",
"prefcode": "1",
"zipcode": "0790177"
}
],
"status": 200
}
Veuillez vous référer à un autre article pour plus de détails. Créer un projet Spring Boot pour Gradle
build.gradle
//Omission
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
compile("com.fasterxml.jackson.core:jackson-databind")
}
FrontController.java
@Controller
public class FrontController {
@Autowired
private FrontService frontService;
@RequestMapping({ "/", "/index" })
public String index() {
return "index";
}
@ResponseBody
@RequestMapping(value = "/getAddress" ,method = RequestMethod.POST, produces="application/json;charset=UTF-8")
public String getAddress(@RequestBody(required = false) AddressForm addressForm) {
return frontService.getAddress(addressForm.getZipcode());
}
}
FrontService.java
public interface FrontService {
public String getAddress(String zipCode);
}
FrontServiceImpl.java
@Service
public class FrontServiceImpl implements FrontService {
/**URL de demande d'API de recherche par code postal*/
private static final String URL = "https://zip-cloud.appspot.com/api/search?zipcode={zipcode}";
@Override
public String getAddress(String zipCode) {
String zipCodeJson = restTemplate.getForObject(URL, String.class, zipCode);
return zipCodeJson;
}
}
--classe de formulaire
AddressForm.java
@Data
public class AddressForm {
/**Code postal*/
String zipcode;
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>address</title>
<script type="text/javascript" th:src="@{/jquery/jquery-3.3.1.js}"></script>
<script th:src="@{/js/index.js}"></script>
</head>
<body>
<form name="getAddress">
<input id="zipcode" type="text">
<button type="button" id="getAddressBtn">Obtenez une adresse</button>
<div id="dispAddress"></div>
</form>
</body>
</html>
index.js
$(function() {
$('#getAddressBtn').on('click', function() {
var params = {
"zipcode" : $('#zipcode').val()
};
$.ajax({
url : 'getAddress',
type: 'POST',
contentType: "application/json",
data: JSON.stringify(params),
dataType : 'json',
async: false,
success: function (data) {
$("#dispAddress").empty();
var dispAddress = document.getElementById("dispAddress");
var table = document.createElement("table");
table.setAttribute("border","2");
table.setAttribute("cellpadding","15");
table.setAttribute("style","margin :15px");
$(data.results).each(function(index, result){
table.appendChild(createRow("Code postal",result.zipcode));
table.appendChild(createRow("Code préfecture",result.prefcode));
table.appendChild(createRow("Nom des préfectures",result.address1));
table.appendChild(createRow("Nom de Ville",result.address2));
table.appendChild(createRow("Nom de la zone de la ville",result.address3));
table.appendChild(createRow("Nom de la préfecture Kana",result.kana1));
table.appendChild(createRow("Nom municipal Kana",result.kana2));
table.appendChild(createRow("Nom de la localité Kana",result.kana3));
});
dispAddress.appendChild(table);
}
});
});
});
function createRow(header , value){
var tr = document.createElement("tr");
var th = document.createElement("th");
th.append(header);
var td = document.createElement("td");
td.append(value);
tr.appendChild(th);
tr.appendChild(td);
return tr;
}
--Accédez à "localhost: 8080" avec un navigateur
--Entrez "100-0001" (code postal du palais impérial) et appuyez sur le bouton d'acquisition d'adresse
___ Comment convertir le format Json en classe DTO et recevoir ___
FrontController.java
@Controller
public class FrontController {
@Autowired
private FrontService frontService;
@RequestMapping({ "/", "/index" })
public String index() {
return "index";
}
@ResponseBody
@RequestMapping(value = "/getAddress" ,method = RequestMethod.POST, produces="application/json;charset=UTF-8")
//Changer la valeur de retour de String en ZipcodeDto
public ZipcodeDto getAddress(@RequestBody(required = false) AddressForm addressForm) {
return frontService.getAddress(addressForm.getZipcode());
}
}
--Classe de service (correction)
FrontService.java
public interface FrontService {
//Changer la valeur de retour de String en ZipcodeDto
public ZipcodeDto getAddress(String zipCode);
}
--Classe DTO (supplémentaire)
ZipcodeDto.java
@Data
public class ZipcodeDto {
/**statut*/
int status;
/**message*/
String message;
/**Liste d'informations sur les codes postaux*/
List<ZipcodeResultDto> results = new ArrayList<>();
}
--Classe DTO (supplémentaire)
ZipcodeResultDto.java
@Data
public class ZipcodeResultDto {
/**Code postal*/
String zipcode;
/**Code préfecture*/
String prefcode;
/**Nom des préfectures*/
String address1;
/**Nom de Ville*/
String address2;
/**Nom de la zone de la ville*/
String address3;
/**Nom de la préfecture Kana*/
String kana1;
/**Nom municipal Kana*/
String kana2;
/**Nom de la localité Kana*/
String kana3;
}
FrontServiceImpl.java
@Service
public class FrontServiceImpl implements FrontService {
//ObjectMapper ajouté
@Autowired
ObjectMapper objectMapper;
//Changer les paramètres d'URL en expressions régulières
private static final String URL = "https://zip-cloud.appspot.com/api/search?zipcode=%s";
@Override
public ZipcodeDto getAddress(String zipCode) {
ZipcodeDto zipcodeDto = null;;
try {
//Spécifiez l'URL et la classe de réception dans ObjectMapper
java.net.URL url = new java.net.URL(String.format(URL,zipCode));
zipcodeDto = objectMapper.readValue(url, ZipcodeDto.class);
} catch (Exception e) {
e.getStackTrace();
}
return zipcodeDto;
}
}
FrontServiceImpl.java
@Service
public class FrontServiceImpl implements FrontService {
//Ajout de restTemplate
RestTemplate restTemplate = new RestTemplate();
private static final String URL = "https://zip-cloud.appspot.com/api/search?zipcode={zipCode}";
@Override
public ZipcodeDto getAddress(String zipCode) {
ZipcodeDto zipcodeDto = null;;
try {
//Ajout de MappingJackson2HttpMessageConverter à messageConverter de reatTemplate
MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
List<MediaType> supportedMediaTypes = new ArrayList<>(messageConverter.getSupportedMediaTypes());
supportedMediaTypes.add(MediaType.TEXT_PLAIN);
messageConverter.setSupportedMediaTypes(supportedMediaTypes);
restTemplate.setMessageConverters(Collections.singletonList(messageConverter));
zipcodeDto = restTemplate.getForObject(URL, ZipcodeDto.class, zipCode);
} catch (Exception e) {
e.getStackTrace();
}
return zipcodeDto;
}
}
Recommended Posts