[JAVA] Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 1 (API Edition)

Wäre es nicht cool, wenn die API von einem Webdienst bereitgestellt werden könnte?

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

1. Machen Sie eine Service-Seite

Methode zur Steuerung

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.

So erhalten Sie eine Anfrage

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 (* ^ - ^ *).

Mach die Verarbeitung

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();
	}

So geben Sie die Antwort zurück

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.

Die API-Seite ist abgeschlossen

Sie haben die Funktionalität jetzt als API bereitgestellt. Als nächstes stellen wir diese Kommunikation als Client her und verwenden diese Funktion. Fortsetzung

Recommended Posts

Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 1 (API Edition)
Ich habe eine Funktion zum Registrieren von Bildern bei der API in Spring Framework erstellt. Teil 2 (Client Edition)
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 2
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 1
Ich habe ein einfaches Suchformular mit Spring Boot + GitHub Search API erstellt.
"Lehrer, ich möchte im Frühjahr eine Anmeldefunktion implementieren" ① Hallo Welt
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich möchte eine Funktion in der Rails Console definieren
Ich habe versucht, mit Java und Spring eine Funktion / einen Bildschirm für den Administrator einer Einkaufsseite zu erstellen
Ich möchte eine Produktinformationsbearbeitungsfunktion ~ part1 ~ implementieren
Ich habe ein Plug-In erstellt, das Jextract mit Gradle-Aufgaben ausführt
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe mit Gem in Ruby nach einem Webframework gesucht
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Rails war schwierig, deshalb habe ich so etwas wie einen Spring Framework-Controller gemacht, um eine Pause einzulegen
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich habe mit Swing eine GUI erstellt
02. Ich habe eine API erstellt, um eine Verbindung von Spring Boot zu MySQL (My Batis) herzustellen.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 1) erstellt.
Ich habe eine einfache Empfehlungsfunktion erstellt.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 5) erstellt:
Ich wollte die JavaFX-Programmierung mit dem Spring Framework vereinfachen
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Ich wollte eine Diashow mit Slick modisch umsetzen.
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
[LINE BOT] Ich habe einen Ramen BOT mit Java (Maven) + Heroku + Spring Boot (1) gemacht.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 2) erstellt: Modell ändern
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe eine Janken App mit Kotlin gemacht
Ich habe eine Janken App mit Android gemacht
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
[Go To Travel] Ich suchte nach einem Plan mit einer Quo-Karte
Einführung des Experten Nr. 15 zum Erstellen einer Bulletin-Board-API mit Zertifizierung und Autorisierung in Rails 6
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports Extra Edition (Variables Edition) zu drucken.
Ich habe versucht, ein Formular mit Spring MVC und Jasper Reports Extra Edition (Bildausgabe) zu drucken.
SpringSecurity Ich war süchtig danach, mich mit einem Hash-Passwort anzumelden (gelöst)
Ich habe ein Beispiel erstellt, wie ein Delegat in Swift UI 2.0 mit MapKit geschrieben wird
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe einen Docker-Container erstellt, um Maven auszuführen
Ich habe eine Ruby-Erweiterungsbibliothek in C erstellt
So fügen Sie in Spring Boot einen Klassenpfad hinzu
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.