--Überprüfen Sie die Verwendung der API auf der folgenden Site. https://zip-cloud.appspot.com/doc/api
--Überprüfen Sie die technischen Daten.
Basierend auf https://zip-cloud.appspot.com/api/search
Parameter anfordern
Parametername | Artikelname | Verpflichtend | Bemerkungen |
---|---|---|---|
zipcode | Postleitzahl | ○ | 7-stellige Nummer. Kann mit Bindestrichen sein. Genaue Übereinstimmungssuche. |
callback | Name der Rückruffunktion | - | Name der Rückruffunktion bei der Ausgabe als JSONP. UTF-URL-codierte Zeichenfolge in 8. |
limit | Maximale Anzahl | - | Maximale Anzahl zurückgegebener Artikel, wenn mehrere Artikel mit derselben Postleitzahl (Nummer) vorhanden sind * Standard: 20 |
Antwortparameter
Feldname | Artikelname | Bemerkungen |
---|---|---|
status | Status | 200 wird zurückgegeben, wenn es normal ist, und ein Fehlercode wird zurückgegeben, wenn ein Fehler auftritt. |
message | Botschaft | Wenn ein Fehler auftritt, wird der Inhalt des Fehlers zurückgegeben. |
results | zipcode(Postleitzahl) prefcode(Präfekturcode) address1(Name der Präfekturen) address2(Stadtname) address3(Name des Stadtgebiets) kana1(Name der Präfekturenカナ) kana2 (Stadtnameカナ) kana3(Name des Stadtgebietsカナ) |
Wenn es mehrere gibt, handelt es sich um ein Array |
(Beispiel) Bei der Suche mit der Postleitzahl "7830060"
URL anfordern https://zip-cloud.appspot.com/api/search?zipcode=7830060
Antwort
{
"message": null,
"results": [
{
"Adresse1": "Hokkaido",
"address2": "Miuta City",
"address3": "Kyowa Kamimi Utamachi",
"kana1": "Hokkaidou",
"kana2": "Besuch",
"kana3": "Kamibi Byokyo Wow",
"prefcode": "1",
"zipcode": "0790177"
},
{
"Adresse1": "Hokkaido",
"address2": "Miuta City",
"address3": "Kami Utacho Minami",
"kana1": "Hokkaidou",
"kana2": "Besuch",
"kana3": "Kamibibichominami",
"prefcode": "1",
"zipcode": "0790177"
}
],
"status": 200
}
Weitere Informationen finden Sie in einem anderen Artikel. Erstellen Sie ein Spring Boot-Projekt für Gradle
build.gradle
//Unterlassung
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());
}
}
--Serviceklasse
FrontService.java
public interface FrontService {
public String getAddress(String zipCode);
}
FrontServiceImpl.java
@Service
public class FrontServiceImpl implements FrontService {
/**Postleitzahlensuch-API Anforderungs-URL*/
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;
}
}
AddressForm.java
@Data
public class AddressForm {
/**Postleitzahl*/
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">Holen Sie sich eine 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("Postleitzahl",result.zipcode));
table.appendChild(createRow("Präfekturcode",result.prefcode));
table.appendChild(createRow("Name der Präfekturen",result.address1));
table.appendChild(createRow("Stadtname",result.address2));
table.appendChild(createRow("Name des Stadtgebiets",result.address3));
table.appendChild(createRow("Präfekturname Kana",result.kana1));
table.appendChild(createRow("Kommunaler Name Kana",result.kana2));
table.appendChild(createRow("Stadtgebietsname 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;
}
--Geben Sie "100-0001" (Postleitzahl des Kaiserpalastes) ein und drücken Sie die Adressenerfassungstaste
___ So konvertieren Sie das Json-Format in eine DTO-Klasse und erhalten ___
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")
//Ändern Sie den Rückgabewert von String in ZipcodeDto
public ZipcodeDto getAddress(@RequestBody(required = false) AddressForm addressForm) {
return frontService.getAddress(addressForm.getZipcode());
}
}
--Serviceklasse (Korrektur)
FrontService.java
public interface FrontService {
//Ändern Sie den Rückgabewert von String in ZipcodeDto
public ZipcodeDto getAddress(String zipCode);
}
--DTO Klasse (zusätzlich)
ZipcodeDto.java
@Data
public class ZipcodeDto {
/**Status*/
int status;
/**Botschaft*/
String message;
/**Postleitzahl Informationsliste*/
List<ZipcodeResultDto> results = new ArrayList<>();
}
--DTO Klasse (zusätzlich)
ZipcodeResultDto.java
@Data
public class ZipcodeResultDto {
/**Postleitzahl*/
String zipcode;
/**Präfekturcode*/
String prefcode;
/**Name der Präfekturen*/
String address1;
/**Stadtname*/
String address2;
/**Name des Stadtgebiets*/
String address3;
/**Präfekturname Kana*/
String kana1;
/**Kommunaler Name Kana*/
String kana2;
/**Stadtgebietsname Kana*/
String kana3;
}
FrontServiceImpl.java
@Service
public class FrontServiceImpl implements FrontService {
//ObjectMapper hinzugefügt
@Autowired
ObjectMapper objectMapper;
//Ändern Sie die URL-Parameter in reguläre Ausdrücke
private static final String URL = "https://zip-cloud.appspot.com/api/search?zipcode=%s";
@Override
public ZipcodeDto getAddress(String zipCode) {
ZipcodeDto zipcodeDto = null;;
try {
//Geben Sie die URL und die empfangende Klasse in ObjectMapper an
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 {
//RestTemplate hinzugefügt
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 {
//MappingJackson2HttpMessageConverter wurde zu messageConverter von reatTemplate hinzugefügt
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