это Java-контроллер
он также возвращает 404 при развертывании на локальном хосте. (я проверил, верны ли конечные точки, да)
Конечная цель для меня состоит в том, чтобы мой логин работал (развернутый на Azure), а не только localhost, если я вообще заработаю
Код: Выделить всё
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping("/register")
public ResponseEntity registerUser(@RequestBody User newUser) {
User registeredUser = userService.registerUser(newUser.getPhoneNumber(), newUser.getUsername(), newUser.getPassword());
if (registeredUser != null) {
return ResponseEntity.ok("Registration successful");
} else {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Registration failed");
}
}
@PostMapping("/login")
public ResponseEntity loginUser(@RequestBody User loginUser, HttpSession session) {
User user = userService.loginUser(loginUser.getUsername(), loginUser.getPassword());
if (user != null) {
session.setAttribute("userId", user.getUserId());
Map response = new HashMap();
response.put("message", "Login successful");
return ResponseEntity.ok(response);
} else {
Map response = new HashMap();
response.put("message", "Invalid credentials");
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(response);
}
}
@PostMapping("/logout")
public ResponseEntity logoutUser(HttpSession session) {
session.invalidate();
Map response = new HashMap();
response.put("message", "Logged out successfully");
return ResponseEntity.ok(response);
}
@GetMapping("/test")
public ResponseEntity testEndpoint() {
return ResponseEntity.ok("Test endpoint is working!");
}
}
Код: Выделить всё
public class UserService {
private UserData userData = new UserData();
public User registerUser(String phoneNumber, String username, String password) {
return userData.registerUser(phoneNumber, username, password);
}
public User getUserById(String userId) {
return userData.getUserById(userId);
}
public User loginUser(String username, String password) {
return userData.loginUser(username, password);
}
}
Код: Выделить всё
package Backend;
import java.util.ArrayList;
import java.util.List;
public class User {
private String userId;
private String phoneNumber;
private String username;
private String password;
private List friends;
public User(String userId, String phoneNumber, String username, String password, List friends) {
this.userId = userId;
this.phoneNumber = phoneNumber;
this.username = username;
this.password = password;
this.friends = friends;
}
// Getters and setters
}
Код: Выделить всё
document.getElementById('registerForm').addEventListener('submit', function(event) {
event.preventDefault();
let username = document.getElementById('username').value;
let password = document.getElementById('password').value;
let phoneNumber = document.getElementById('phonenumber').value;
var userData = {
username: username,
password: password,
phoneNumber: phoneNumber
};
fetch('http://localhost:8080/api/users/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userData)
})
.then(response => {
if (response.ok) {
alert('Registration successful!');
document.getElementById('registerForm').reset();
window.location.href = 'login.html';
} else {
throw new Error('Registration failed.');
}
})
.catch(error => {
console.error('Registration error:', error);
alert('Registration failed. Please try again later.');
});
});
Когда я пытаюсь отправить регистрационную форму, я получаю сообщение об ошибке 404 Not Found. Я убедился, что мой API правильно развернут в Azure и должен быть доступен.
Я:
Убедился, что служба приложений Azure работает.
Убедился, что конечная точка /api/users/register правильно определен в UserController.java.
Проверена конфигурация CORS в WebConfig.java, чтобы разрешить запросы из всех источников.
Подтверждено, что файл JavaScript (Register.js) связан правильно и сделать запрос POST на правильный URL-адрес Azure.
Редактировать:
все работает нормально локально, и мой интерфейс выполнен с использованием простого html/css/js
Идентификаторы и имена ссылок также связаны правильно.
Изменить:
все мои HTML-css и js находятся в статическом файле,
src/main/resources/static/ccs
src/main/resources/static/js
src/main/resources/static/(весь мой HTML-код)
Подробнее здесь: https://stackoverflow.com/questions/786 ... on-request