Das Hauptmotiv ist dieses w Voraussetzungen Die Kommunikation von "api.localhost" ist möglich. Siehe this ヾ (.> ﹏ <.) ノ
Die Vorbereitung ist eine Subdomain für API.
Spezifikation Erforderliche Bibliothek.
Bibliotheksname | Erläuterung |
---|---|
SpringFramework 5.0 | Ich möchte, dass jeder liebt |
Jersey | JAX-RS:Es ist eine der Implementierungen der HTTP-Kommunikationsspezifikation von Java. Fügen Sie Java eine Kommunikationsfunktion hinzu |
Jackson | Wrapper für XML und JSON konvertieren zwischen Zeichenfolgen und Klassen |
Zu machen
APIPictureController.java
@RequestMapping(value="/api/picture", produces="application/json;charset=UTF-8")
@Consumes(MediaType.APPLICATION_JSON)
@RestController
public class APIPictureController {
@Autowired
PictureService pictureService;
@POST
@RequestMapping(value="/addPicture", method = RequestMethod.POST, headers = "X-SUBDOMEIN=api")
public String addPicture( HttpServletRequest request, @RequestBody PictureMaster pictureMaster) {
request.getHeaderNames();
//Registrieren Sie ein Bild
Long ResultId = pictureService.addPicture(pictureMaster);
PictureAddResponse response = new PictureAddResponse();
response.setPictureId(ResultId.toString());
response.setSuccessedIs(true);
//Mit Jackson in einen JSON-String konvertieren
ObjectMapper mapper = new ObjectMapper();
String json = null;
try {
json = mapper.writeValueAsString(response);
} catch (JsonProcessingException e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
return "{\"result\":\"failure\"}";
}
//Gibt eine Antwort zurück.
return json;
}
Registrieren Sie die als Antwort gesendeten Bildinformationen mit der bereits erstellten Serviceklasse.
Das erste ist, wie Sie eine wichtige Verarbeitungsanforderung erhalten. Ist die Controller-Annotation und die Argumente für diese Methode.
@Consumes(MediaType.APPLICATION_JSON) In dieser Anmerkung wird angegeben, dass "diese API JSON-formatierte Anforderungen akzeptiert". Und @RequestMapping(value="/api/picture", produces="application/json;charset=UTF-8") Wenn dieses Attribut erzeugt wird, gibt diese API eine JSON-Antwort zurück. Ich werde das einstellen.
APIPictureController.java
public String addPicture( HttpServletRequest request, @RequestBody PictureMaster pictureMaster) {
Entscheiden Sie dann mit diesem @RequestBody, auf welche Klasse Json eingestellt werden soll. Wenn Sie eine Klasse erstellen, die nicht der Clientseite entspricht, die später erstellt wird, wird natürlich ein Fehler ausgegeben Lassen Sie uns eine Kommunikation herstellen, die die Serverseite und die Clientseite ordnungsgemäß verarbeiten können (* ^ - ^ *).
Der Prozess wird aus der Serviceklasse gemäß dem Design von Spring aufgerufen. Siehe DI-Container gemäß @Autowired
PictureServiceImpl.java
/**
*Registrieren Sie ein Bild(API)
*/
@Override
public Long addPicture(PictureMaster pictureMaster) {
//TODO automatisch generierter Methodenstub
pictureMaster.setPictureData(Base64.getDecoder().decode(pictureMaster.getBase64string()));
pRepository.saveAndFlush(pictureMaster);
return pictureMaster.getPictureId();
}
Der zweite wichtige Prozess besteht darin, nach Ausführung des Prozesses eine Antwort zurückzugeben.
Zuerst haben wir die Beans definiert, die für die Antwort benötigt werden.
PictureAddResponse.java
/**
*API-Kommunikationsantwort
* @author nozawa
*
*/
@Data
@ToString
public class PictureAddResponse {
private String pictureId;
private Boolean SuccessedIs;
}
Diese Klasse nutzt die Jackson-Bibliothek In Json-Zeichenfolge konvertiert und zurückgegeben.
APIPictureController.java
PictureAddResponse response = new PictureAddResponse();
response.setPictureId(ResultId.toString());
response.setSuccessedIs(true);
//Mit Jackson in einen JSON-String konvertieren
ObjectMapper mapper = new ObjectMapper();
String json = null;
try {
json = mapper.writeValueAsString(response);
} catch (JsonProcessingException e) {
//TODO automatisch generierter Fangblock
e.printStackTrace();
return "{\"result\":\"failure\"}";
}
//Gibt eine Antwort zurück.
return json;
Konvertieren Sie mit einer Klasse für Json namens ** ObjectMapper **. Setzen Sie die Klasse einfach wie ** mapper.writeValueAsString (Antwort); **. Es ist einfach.:. ゜ ヽ (´∀`.) Nein.:. ゜
Und lassen Sie uns den String zurückgeben.
Sie haben die Funktionalität jetzt als API bereitgestellt. Als nächstes stellen wir diese Kommunikation als Client her und verwenden diese Funktion. Fortsetzung