# 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

:::
:::info

:::
:::info

:::
- 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"}'

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

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

:::
## 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

:::
## 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

:::