---
# System prepended metadata

title: TP7

---

# TP7

#### Nom: `LAFIA-MONWOO David`

## Ecriture d'un serveur chat

- Complétion du tableau de façon a indiquer les méthodes de façon cohérente.

:::info
|URL                 |Type de requête| Description                |
| ------------------ |:------------- |:-------------------------- |
|/messages           |     GET       | avoir la liste des messages|
|/messages/after/{id}|     GET       | avoir les messages compris entre {id} et le dernier message du serveur|
|/messages           |     POST      |ajouter un message. Le message envoyé n'a pas d'id ni de date. C'est le serveur qui les initialise.|
|/messages/{id}      |    GET        | avoir le message d'ID {id} |
|/messages/{id}      |    DELETE     | effacer le message d'ID {id}|
:::

- Lancement du service et teste qu'il fonctionne en consultant les pages : 
:::info
![](https://i.imgur.com/CWh864a.png)
:::


:::info
![](https://i.imgur.com/dxyWB5p.png)
:::

:::info
![](https://i.imgur.com/gPwCBAD.png)
:::

- Les commandes curl permettant : 
:::info
-- d'ajouter un message :
curl -X POST -H 'Content-Type: application/json' -i 'http://localhost:8080/pr.tp.services/api/messages' --data '{"content": "bonjour tous le monde"}'

![](https://i.imgur.com/ndznZm1.png)
:::

:::info
-- de consulter le nouveau message :
curl -X GET -H 'Content-Type: application/json' -i 'http://localhost:8080/pr.tp.services/api/messages/3'

![](https://i.imgur.com/oOgVXaE.png)
:::

:::info
-- de l'effacer :
curl -X DELETE -i 'http://localhost:8080/pr.tp.services/api/messages/3'

![](https://i.imgur.com/hRmF9oU.png)
:::


## Test en Java

- classe de test : 

```java=
package test;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.xml.bind.annotation.XmlRootElement;

public class TestApi {

    public static final String URL = "http://localhost:8080/pr.tp.services/api";

  @XmlRootElement(name="message")
    public static class ChatMessage {
        public Long id;
        public String content;
        public String date;
        @Override
        public String toString() {
            return id + ":" + content+ " at "+ date;
        }
    }

    public static void main(String[] args) {
        Client client = ClientBuilder.newClient();

        //Post a message :
        ChatMessage m = new ChatMessage();
        m.content="test";
        Response response = client.target(URL).path("messages").request(MediaType.APPLICATION_JSON_TYPE).post(Entity.entity(m, MediaType.APPLICATION_XML));
        System.out.println("Response "+ response.getStatus());

        //Get all the messages
        ChatMessage[] messages = client.target(URL).path("messages").request(MediaType.APPLICATION_JSON_TYPE).get(ChatMessage[].class);
        for (ChatMessage chatMessage : messages) {
            System.out.println(chatMessage);
        }
        
        // Get a message
        ChatMessage message = client.target(URL).path("messages/4").request(MediaType.APPLICATION_JSON_TYPE).get(ChatMessage.class);
        System.out.println(message);
        
        // Get all the messages after a message (id)
        ChatMessage[] messagesAfter = client.target(URL).path("messages/after/1").request(MediaType.APPLICATION_JSON_TYPE).get(ChatMessage[].class);
        for (ChatMessage chatMessage : messagesAfter) {
            System.out.println(chatMessage);
        }
        
        // Delete a message
        Response responseDelete = client.target(URL).path("messages/4").request(MediaType.APPLICATION_JSON_TYPE).delete();
        System.out.println("Response "+ responseDelete.getStatus());
        
    }
}
```

## Client du chat avec Javascript 
- Test
:::info
![](https://i.imgur.com/7KRxoza.png)

:::


## Ecriture du client en JAVA
Nouveau projet(voir pr.tp.new) effectué pour le client java (chat en console) mais il y a un warning lors de l'écriture du premier message

:::info
![](https://i.imgur.com/jHaxTmj.png)

:::

