Page 1 sur 1

TP09BB

Publié : 17 déc. 2019 6:44
par velitc_v
Bonjour je rame sur le tp09BB :
dans le controller, pour la méthode suivante comment puis-je récupérer l'url pour pouvoir la décoder, récupérer ses paramètres etc....?
j'ai regardé dans le cours et le code du cours mais je ne trouve rien.

Code : Tout sélectionner

@GetMapping(value = "/barkbank/creditCard")
	@ResponseBody
	public CreditCard getCreditCard(HttpServletResponse response) {
		// récupère les paramètres
		URL url = ???????
		// décode les données de l'url
		String JSONEncoded = URLDecoder.decode(url, "UTF-8");
		//....
		// converti de JSON en JAVA
		//....
Pour info voici ce que je compte mettre dans mon post :

Code : Tout sélectionner

@PostMapping(path = "/barkbank/creditCard", consumes = { "application/json" })
	public void postCreditCard(@RequestBody CreditCard creditCard, Writer out, HttpServletResponse resp)
			throws IOException {
		// définit le format de la réponse à renvoyer
		// verifie que la carte de crédit est valide
		// envoi de la réponse
	}
Suis-je sur la bonne piste?

merci

Re: TP09BB

Publié : 17 déc. 2019 12:22
par bruye_st
Pas vraiment encore sur la bonne piste, non.
Je ne comprends pas votre méthode Post. Réception du message depuis CCService et envoi de la réponse se font dans la même méthode controller.
Dans la méthode que vous présentez, vous ne récupérez rien, vous ne pouvez donc rien analyser. Il vous manque un paramètre. Enfin, cette méthode s'adresse directement à CCService pour sa réponse. Pour cela, revoyez le TP5.

Re: TP09BB

Publié : 17 déc. 2019 13:01
par velitc_v
Je ne comprends pas votre réponse. C'est quoi CCService?

Re: TP09BB

Publié : 17 déc. 2019 14:14
par bruye_st
CreditCardService

Re: TP09BB

Publié : 17 déc. 2019 14:52
par velitc_v
ok mais il y a pas de classe service et service impl..j'étais bien tenté d'en créer une depuis le départ mais vu que c'était pas demandé, dans le missing file j'ai cherché une autre piste..... :(

Re: TP09BB

Publié : 17 déc. 2019 15:06
par bruye_st
L'interface CreditCardService est fournie et CreditCardServiceImpl est demandée

Êtes vous sure d'avoir la bonne version de missingFiles ?

côté BarkBank :
src/main/java/com/barkbank/api/CreditCardController.java
src/main/java/com/barkbank/domain/model/CreditCard.java

côté TP09 :
src/main/java/com/yaps/petstore/domain/model/CreditCard.java
src/main/java/com/yaps/petstore/domain/service/CreditCardServiceImpl.java
src/main/java/com/yaps/petstore/authentication/domain/service/UserServiceImpl.java
src/main/java/com/yaps/petstore/domain/service/OrderServiceImpl.java

Re: TP09BB

Publié : 17 déc. 2019 15:44
par velitc_v
bah non je suis pas sûr du tout ! je vais re regarder ce soir.. puor moi dans tp009BB il y avait que credit card et le controller. merci pour es liens

Re: TP09BB

Publié : 17 déc. 2019 16:40
par bruye_st
Je ne suis par sûr qu'on se comprenne bien.
Ce TP est composé de 2 projets, soient 2 serveurs, qui doivent communiquer entre eux.
Donc 2 projets, et 2 sources différentes à télécharger et installer sur Eclipse.

Le projet TP09 correspond à notre petstore habituel. La classe CreditCardServiceImpl (non fournie, à créer par vous) doit envoyer des requêtes HTTP (via la classe HTTPSender fournie) vers le 2nd projet, TP_BB (Barkbank). Ce 2nd serveur attend des requêtes sur l'url localhost:8081/barkbank/creditCard, les analyse, et envoie un réponse.

Les classes CreditCard et la classe du Controller que vous mentionnez sont les classes que vous devez créer pour la partie BarkBank. Il y a également les classes à créer pour la partie Petstore (TP09), dont CreditCardServiceImpl mais pas uniquement.

Re: TP09BB

Publié : 17 déc. 2019 17:02
par velitc_v
Oui votre explication est bien ce que j'ai compris de ce qu'il fallait faire. la réalisation est plus hasardeuse semble t'il ;)
Mon message concerne le contrôleur de TP009BB donc bark bank et dans ce projet de mémoire il n'y a pas de CreditCardService.

Re: TP09BB

Publié : 17 déc. 2019 20:23
par graffiop
Bonjour,

La servlet Barkbank (du projet annexe TP09BB) n'est censée traiter que des requêtes de type GET (avec un seul paramètre nommé "param") comme le montre la classe de test HttpUnit VerifyCreditCardServletTest :

Code : Tout sélectionner

    private String sendToServletAndGetStatus(String ccJSON) throws Exception {
        final String URL_SERVLET_CREDITCARD = "http://localhost:8081/barkbank/creditcard";
        
        String url = URL_SERVLET_CREDITCARD + "?" + "param=" + URLEncoder.encode(ccJSON, "UTF-8");

        // Sends the JSON to the servlet
        WebResponse verifyResult = webConversation.getResponse(url);

        // Creates a JSON document from the result of the servlet
        String status = verifyResult.getText();

        // Returns the status of the credit card
        return status;
    }
Le controleur attendu dans ce TPBB doit donc ressembler à ça :

Code : Tout sélectionner

@Controller
public class CreditCardController {
	
	@GetMapping("/creditcard")
	public void checkCreditCard (@RequestParam(value = "param") String param, HttpServletResponse response) throws IOException {
(La classe CreditCardService dont parle Stéphane utilisera le service http://localhost:8081/barkbank/creditcard ... mais c'est dans l'étape suivante (le "vrai" TP09).)