Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
0fb9e271ee |
@ -17,6 +17,8 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
|
||||
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
}
|
||||
|
||||
|
65
demo/index.html
Normal file
65
demo/index.html
Normal file
@ -0,0 +1,65 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<p id="out">Push the button</p>
|
||||
<input id="name"/>
|
||||
<br/>
|
||||
<button onclick="get()">Get</button>
|
||||
<br/>
|
||||
<button onclick="getTest()">Get Test</button>
|
||||
<br/>
|
||||
<button onclick="post()">Post</button>
|
||||
<br/>
|
||||
<button onclick="put()">Put</button>
|
||||
</body>
|
||||
<script>
|
||||
const url = "http://localhost:8080/api";
|
||||
const out = document.getElementById("out");
|
||||
const name = document.getElementById("name");
|
||||
|
||||
const get = async () => {
|
||||
const res = await fetch(`${url}?name=${name.value}`);
|
||||
const text = await res.text();
|
||||
out.innerText = text;
|
||||
}
|
||||
|
||||
const getTest = async () => {
|
||||
const res = await fetch(`${url}/test`);
|
||||
const text = await res.text();
|
||||
out.innerText = text;
|
||||
}
|
||||
|
||||
const post = async () => {
|
||||
if (!name.value) {
|
||||
alert("Name is required");
|
||||
return;
|
||||
}
|
||||
const res = await fetch(url, {
|
||||
method: 'post',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: name.value
|
||||
});
|
||||
const text = await res.text();
|
||||
out.innerText = text;
|
||||
}
|
||||
|
||||
const put = async () => {
|
||||
if (!name.value) {
|
||||
alert("Name is required");
|
||||
return;
|
||||
}
|
||||
const res = await fetch(`${url}/${name.value}`, {
|
||||
method: 'put',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: name.value
|
||||
});
|
||||
const text = await res.text();
|
||||
out.innerText = text;
|
||||
}
|
||||
</script>
|
||||
</html>
|
61
demo/src/main/java/com/example/demo/ApiController.java
Normal file
61
demo/src/main/java/com/example/demo/ApiController.java
Normal file
@ -0,0 +1,61 @@
|
||||
package com.example.demo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/message")
|
||||
public class ApiController {
|
||||
private final Logger log = LoggerFactory.getLogger(ApiController.class);
|
||||
|
||||
// Список сообщений
|
||||
private List<MessageDto> messages = new ArrayList<>();
|
||||
|
||||
// Получить список сообщений
|
||||
@GetMapping
|
||||
public List<MessageDto> getMessages() {
|
||||
log.info("Get list of messages: {}", messages.size());
|
||||
return messages;
|
||||
}
|
||||
|
||||
// Получить сообщение по id
|
||||
@GetMapping("/{id}")
|
||||
public MessageDto getMessage(@PathVariable(name = "id") int id) {
|
||||
log.info("Get message: {}", id);
|
||||
return messages.get(id);
|
||||
}
|
||||
|
||||
// Добавить сообщение
|
||||
@PostMapping
|
||||
public MessageDto postMessage(@RequestBody MessageDto message) {
|
||||
log.info("Add message: {}", message);
|
||||
messages.add(message);
|
||||
return message;
|
||||
}
|
||||
|
||||
// Изменить сообщение по id
|
||||
@PutMapping("/{id}")
|
||||
public MessageDto putMessage(@PathVariable(name = "id") int id, @RequestBody MessageDto message) {
|
||||
log.info("Update message {} with new message {}", id, message);
|
||||
messages.set(id, message);
|
||||
return message;
|
||||
}
|
||||
|
||||
// Удалить сообщение по id
|
||||
@DeleteMapping("/{id}")
|
||||
public MessageDto deleteMessage(@PathVariable(name = "id") int id) {
|
||||
log.info("Delete message: {}", id);
|
||||
return messages.remove(id);
|
||||
}
|
||||
}
|
43
demo/src/main/java/com/example/demo/MessageDto.java
Normal file
43
demo/src/main/java/com/example/demo/MessageDto.java
Normal file
@ -0,0 +1,43 @@
|
||||
package com.example.demo;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class MessageDto {
|
||||
private String name;
|
||||
private String email;
|
||||
private String text;
|
||||
private Date date;
|
||||
|
||||
public MessageDto() { }
|
||||
|
||||
@JsonCreator
|
||||
public MessageDto(
|
||||
@JsonProperty(value = "name") String name,
|
||||
@JsonProperty(value = "email") String email,
|
||||
@JsonProperty(value = "text") String text,
|
||||
@JsonProperty(value = "date") Date date) {
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
this.text = text;
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return date;
|
||||
}
|
||||
}
|
15
demo/src/main/java/com/example/demo/WebConfig.java
Normal file
15
demo/src/main/java/com/example/demo/WebConfig.java
Normal file
@ -0,0 +1,15 @@
|
||||
package com.example.demo;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class WebConfig implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addCorsMappings(@NonNull CorsRegistry registry) {
|
||||
registry.addMapping("/**")
|
||||
.allowedMethods("GET", "POST", "PUT", "DELETE");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user