Comment créer une API ici
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.
Tout d'abord, convertissez ici la requête au format Json et préparez-la.
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
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.
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 maintenant.
Je vais omettre un peu le fonctionnement de l'écran. ; Tsu Д `)
Je peux confirmer que la réponse est de retour.
L'image a été enregistrée dans la DB!
Recommended Posts