[JAVA] J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 2 (édition client)

J'ai créé une API, je vais donc essayer de me connecter.

Comment créer une API ici

Connectez-vous en utilisant Jersey.

L'image entière du client que j'ai fait ressemble à ceci

ImageIOController.java



	@RequestMapping(value = "/imageCompleteApi", method = RequestMethod.POST)
	public ModelAndView imageUploadCompleteApi(ImageUploadFormApi imageUploadFormApi,
			Principal principal) {
		
		//Obtenez des identifiants
        Authentication auth = (Authentication)principal;
        LoginUserDetails LoginUser = (LoginUserDetails)auth.getPrincipal();
		
		//Obtenez des données binaires
		Integer FileSize = (int) (imageUploadFormApi.getImage().getSize());
		byte[] imageBinary = new byte[FileSize];
		
		try {
			 imageBinary = imageUploadFormApi.getImage().getBytes();
		} catch (IOException e) {
			//Bloc de capture généré automatiquement TODO
			e.printStackTrace();
		}

		//Demande de préparation
		PictureMaster pictureMaster = new PictureMaster();
		
		pictureMaster.setOriginalName(imageUploadFormApi.getImage().getOriginalFilename());
		pictureMaster.setPictureName(imageUploadFormApi.getFilename());
		pictureMaster.setExtension(imageUploadFormApi.getImage().getOriginalFilename()
				.substring(imageUploadFormApi.getImage().getOriginalFilename().length() - 4, imageUploadFormApi.getImage().getOriginalFilename().length()));
		pictureMaster.setBase64string(Base64.getEncoder().encodeToString(imageBinary));
		pictureMaster.setUploadUserId(LoginUser.getUserId());
	    //Appelez l'API pour enregistrer l'image
		

		ObjectMapper mapper = new ObjectMapper();
		
		Entity<String> requestBody = null;
		String result = null;
		
		//Définissez l'en-tête.
		MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
		headers.putSingle("X-SUBDOMEIN", "api");
		
		try {
			requestBody = Entity.json(mapper.writeValueAsString(pictureMaster));
			
			//Envoyez une demande de publication à l'API sur votre serveur.
			Client client = ClientBuilder.newClient();
			WebTarget target = client.target("http://api.localhost:8080")
				    .path("/WebAquarium3.1/api/picture/addPicture");
			
			result = target
					.request()
					.headers(headers)
					.post(requestBody, String.class);
			
			
		} catch (IOException e1) {
			//Bloc de capture généré automatiquement TODO
			e1.printStackTrace();
		}
		
                		
        //Convertir le JSON reçu en classe
		
		System.out.println(result);
		ModelAndView mv = new ModelAndView("ImageComplete");
		return mv;
	}

Dans la première moitié, vous traitez simplement les données acquises selon la base de données. L'important est

ImageIOController.java


ObjectMapper mapper = new ObjectMapper();

C'est un processus de.

Le flux de traitement est comme ça.

  1. Définissez les en-têtes requis pour l'API.
  2. Préparer l'entité de demande
  3. Définissez l'en-tête et demandez et exécutez le POST.

Tout d'abord, convertissez ici la requête au format Json et préparez-la.

1. Définissez les en-têtes requis pour l'API.

ImageController.java



		//Définissez l'en-tête.
		MultivaluedMap<String, Object> headers = new MultivaluedHashMap<>();
		headers.putSingle("X-SUBDOMEIN", "api");

Je vais définir les en-têtes nécessaires pour la demande. ** MultivaluedHashMap ** Classe d'en-tête pour Jersey

2. Préparer l'entité de demande

ImageController.java


			requestBody = Entity.json(mapper.writeValueAsString(pictureMaster));

Ensuite, définissez les données Json dans la classe Entity. Les données Json sont générées à l'aide de Jackson.

3. Définissez l'en-tête et demandez et exécutez le POST.

ImageController.java


			//Envoyez une demande de publication à l'API sur votre serveur.
			Client client = ClientBuilder.newClient();
			WebTarget target = client.target("http://api.localhost:8080")
				    .path("/WebAquarium3.1/api/picture/addPicture");
			
			result = target
					.request()
					.headers(headers)
					.post(requestBody, String.class);

Tout d'abord, utilisez ** ClientBuilder ** et ** WebTarget **, Je vais définir à quelle adresse dans quel domaine se connecter

Ensuite, définissez les en-têtes et les messages dans les en-têtes et les messages. Le ** String.class ** final signifie le final "Je recevrai la réponse sous forme de chaîne".

Il semble que vous puissiez l'obtenir même avec votre propre classe si vous définissez quelque chose appelé JerseyProvider, mais je ne le ferai pas cette fois (Mendokusa (ry))

Connectons-nous

Connectons-nous maintenant.

Je vais omettre un peu le fonctionnement de l'écran. ; Tsu Д `)

Je peux confirmer que la réponse est de retour. image.png

L'image a été enregistrée dans la DB! image.png

Recommended Posts

J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 2 (édition client)
J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 1 (édition API)
J'ai créé un domaine api avec Spring Framework. Partie 2
J'ai créé un serveur et un client Restful au printemps.
J'ai créé un formulaire de recherche simple avec Spring Boot + GitHub Search API.
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
"Professeur, je souhaite implémenter une fonction de connexion au printemps" ① Hello World
J'ai fait de l'art de la mosaïque avec des images Pokemon
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
J'ai essayé de créer une fonction de connexion avec Java
Je souhaite définir une fonction dans la console Rails
J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
Exemple de configuration d'API RESTful minimum avec Jersey + Spring Framework
Spring Boot: exemple de projet d'API Restful
API RESTful d'autorisation d'accès au démarrage de printemps
Implémenter l'API REST avec Spring Boot
Lancer un (ancien) projet Spring Boot avec IntelliJ
Créer un projet Java Spring Boot avec IntelliJ
Changements majeurs dans la fonctionnalité de base de Spring Framework 5.0
Exemple de code pour appeler l'API Yahoo! Shopping Product Search (v3) avec Spring RestTemplate
J'ai créé une fonction pour enregistrer des images avec l'API dans Spring Framework. Partie 1 (édition API)
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
Je veux créer une fonction avec kotlin et java!
J'ai recherché un framework web avec Gem en Ruby
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
J'ai créé un client RESAS-API en Java
Les rails étaient difficiles, alors j'ai fait quelque chose comme un contrôleur Spring Framework pour faire une pause
Je souhaite ajouter une fonction de navigation avec ruby on rails
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 1)
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 5):
Je voulais faciliter la programmation JavaFX avec Spring Framework
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
J'ai créé une interface graphique avec Swing
J'ai fait une simple fonction de recommandation.
J'ai créé un domaine api avec Spring Framework. Partie 2
J'ai recherché un framework web avec Gem en Ruby
J'ai résumé le cadre de la collection.
Je veux afficher des images avec REST Controller de Java et Spring!
Je souhaite sélectionner plusieurs éléments avec une disposition personnalisée dans la boîte de dialogue
J'ai examiné le flux de communication TCP avec Spring Integration (édition client)
Je souhaite afficher un PDF chinois (coréen) avec des rapports fins
J'ai écrit une fonction Lambda en Java et l'ai déployée avec SAM
Je veux ForEach un tableau avec une expression Lambda en Java
[LINE BOT] J'ai créé un Ramen BOT avec Java (Maven) + Heroku + Spring Boot (1)
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 2): Changer de modèle
J'ai fait une mort risquée avec Ruby
J'ai créé une application Janken avec kotlin
J'ai créé une application Janken avec Android
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
J'ai créé une application d'apprentissage automatique avec Dash (+ Docker) part3 ~ Practice ~
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
Introduction de # 10 devise_token_auth pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails 6
03. J'ai envoyé une demande de Spring Boot à l'API de recherche de code postal
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (deuxième décoction Javassist)
[Go To Travel] J'ai cherché un plan avec une carte quo
J'ai créé un client API THETA qui peut être utilisé pour le développement de plugins
Introduction de l'expert n ° 15 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports Extra (édition Variables)
J'ai essayé d'imprimer un formulaire avec Spring MVC et Jasper Reports Extra Edition (édition d'image)
SpringSecurity J'étais accro à essayer de me connecter avec un mot de passe haché (résolu)
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
J'ai fait un exemple de la façon d'écrire un délégué dans Swift UI 2.0 à l'aide de MapKit
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (Royal road edition qui n'est ni magique ni rien)
04. J'ai fait un frontal avec SpringBoot + Thymeleaf