Le motif principal est ce w Conditions préalables La communication de "api.localhost" est possible. Voir this ヾ (.> ﹏ <.) ノ
La préparation est un sous-domaine pour l'API.
spécification Bibliothèque requise.
Nom de la bibliothèque | La description |
---|---|
SpringFramework 5.0 | Je veux que tout le monde aime |
Jersey | JAX-RS:C'est l'une des implémentations de la spécification de communication HTTP de Java. Ajouter une fonction de communication à Java |
Jackson | Wrappers pour xml et json, conversion entre chaînes et classes |
Faire
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();
//Enregistrer une image
Long ResultId = pictureService.addPicture(pictureMaster);
PictureAddResponse response = new PictureAddResponse();
response.setPictureId(ResultId.toString());
response.setSuccessedIs(true);
//Convertir en chaîne json à l'aide de Jackson
ObjectMapper mapper = new ObjectMapper();
String json = null;
try {
json = mapper.writeValueAsString(response);
} catch (JsonProcessingException e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
return "{\"result\":\"failure\"}";
}
//Renvoie une réponse.
return json;
}
Enregistrez les informations d'image envoyées en tant que réponse à l'aide de la classe de service que vous avez déjà créée.
Le premier est de savoir comment recevoir une demande de traitement importante. Est l'annotation du contrôleur et les arguments de cette méthode.
@Consumes(MediaType.APPLICATION_JSON) Cette annotation déclare que "cette API accepte les demandes au format JSON". Et @RequestMapping(value="/api/picture", produces="application/json;charset=UTF-8") Avec cet attribut produit, cette API renvoie une réponse JSON. Je vais définir cela.
APIPictureController.java
public String addPicture( HttpServletRequest request, @RequestBody PictureMaster pictureMaster) {
Ensuite, avec cette @RequestBody, décidez sur quelle classe Json doit être défini. Bien sûr, si vous créez une classe qui ne correspond pas côté client qui sera créée ultérieurement, une erreur sera générée, donc Faisons une communication que le côté serveur et le côté client peuvent gérer correctement (* ^ - ^ *)
Le processus est appelé à partir de la classe de service conformément à la conception de Spring. Voir conteneur DI, par @Autowired
PictureServiceImpl.java
/**
*Enregistrer une image(API)
*/
@Override
public Long addPicture(PictureMaster pictureMaster) {
//TODO talon de méthode généré automatiquement
pictureMaster.setPictureData(Base64.getDecoder().decode(pictureMaster.getBase64string()));
pRepository.saveAndFlush(pictureMaster);
return pictureMaster.getPictureId();
}
Et le deuxième processus important consiste à renvoyer une réponse après avoir exécuté le processus.
Tout d'abord, nous avons défini les beans nécessaires à la réponse.
PictureAddResponse.java
/**
*Réponse de communication API
* @author nozawa
*
*/
@Data
@ToString
public class PictureAddResponse {
private String pictureId;
private Boolean SuccessedIs;
}
Cette classe, utilisant la bibliothèque Jackson Converti en chaîne de caractères Json et renvoyé.
APIPictureController.java
PictureAddResponse response = new PictureAddResponse();
response.setPictureId(ResultId.toString());
response.setSuccessedIs(true);
//Convertir en chaîne json à l'aide de Jackson
ObjectMapper mapper = new ObjectMapper();
String json = null;
try {
json = mapper.writeValueAsString(response);
} catch (JsonProcessingException e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
return "{\"result\":\"failure\"}";
}
//Renvoie une réponse.
return json;
Convertissez à l'aide d'une classe pour Json appelée ** ObjectMapper **. Mettez simplement la classe comme ** mapper.writeValueAsString (response); **. C'est facile.:. ゜ ヽ (´∀`.) Non.:. ゜
Et retournons la chaîne.
Vous avez maintenant fourni la fonctionnalité en tant qu'API. Ensuite, faisons cette communication en tant que client et utilisons cette fonction. Suite
Recommended Posts