Служба Rest URL дает не работает и дает ошибку - PullRequest
0 голосов
/ 15 марта 2019

Итак, я пытался заставить эту службу отдыха работать, и я работал над ней несколько дней, но просто не могу заставить работать URL, независимо от того, что я пытаюсь.Сначала я попробовал все предложения, которые Интернет дал в отношении файла web.xml.Как только я понял, что это последняя причина, я попробовал класс JAXRSConfiguration с аннотацией @ApplicationPath ("/") '.

Итак, вот класс JAXRS:

    @ApplicationPath("api")
    public class JAXRSConfiguration extends Application {

        public JAXRSConfiguration() {
            BeanConfig beanConfig = new BeanConfig();
            beanConfig.setVersion("2.0.0");
            beanConfig.setSchemes(new String[]{"http"});
            beanConfig.setHost("localhost:8080");
            beanConfig.setBasePath("/MyApp/api");
            beanConfig.setResourcePackage("rest");
            beanConfig.setPrettyPrint(true);
            beanConfig.setScan();
            getClasses();
        }

        @Override
        public Set<Class<?>> getClasses() {
            final Set<Class<?>> classes = new HashSet<>();
            classes.add(UserResource.class);
            classes.add(MessageService.class);
            return classes;
        }
    }

А вотодин из моих файлов ресурсов:

@Path("/users")
public class UserResource {
    private UserService service = new UserService();

    @DELETE
    @Path("/{userId}")
    public void deleteMessage(@PathParam("userId") int id) {
        service.deleteUser(id);
    }

    @POST
    @Path("/{userId}/follow/{userToFollowId}")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public void followUser(@PathParam("userToFollowId") int userId, int userToFollowId) {
        service.followUser(userId, userToFollowId);
    }

    @POST
    @Path("/register")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public User registerUser(User user) {
        return service.registerUser(user);
    }

    @PUT
    @Path("/{userId}")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.TEXT_PLAIN)
    public User updateUser(User user) {
        return service.updateUser(user);
    }

    @GET
    @Path("/{userId}")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.APPLICATION_XML)
    public User getUser(@PathParam("userId") int id) {
        return service.getUser(id);
    }

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getAllUsers() {
        return service.getAllUsers();
    }

    @GET
    @Path("/{userId}/followers")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getFollowers(@PathParam("userId") int id) {
        return service.getFollowers(id);
    }

    @GET
    @Path("/{userId}/followings")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.APPLICATION_XML)
    public List<User> getFollowings(@PathParam("userId") int id) {
        return service.getFollowings(id);
    }

    @GET
    @Path("/{userId}/kweets")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.APPLICATION_XML)
    public List<Kweet> getKweets(@PathParam("userId") String username) {
        return service.getKweets(username);
    }

    @GET
    @Path("/{userId}/timeline")
    @Consumes(MediaType.TEXT_PLAIN)
    @Produces(MediaType.APPLICATION_XML)
    public List<Kweet> loadTimeline(@PathParam("userId") int id) {
        return service.loadTimeline(id);
    }
}

Ошибка, которую я получаю:

HTTP Status 404 - Не найдено Тип Отчет о состоянии

messageNot Found

описаниеЗапрошенный ресурс недоступен.

GlassFish Server с открытым исходным кодом, версия 5.0

1 Ответ

0 голосов
/ 15 марта 2019

Откройте настройки модуля IDEA и посмотрите под Артефакты .Вы найдете что-то вроде этого

enter image description here

Подсвеченное имя артефакта war / exploded будет вашим контекстным путем к серверу .
В моем случае это будет

http://localhost:8080/kwetter-0.0.1

Вы должны заменить его своим.
Теперь вам нужно добавить путь @ApplicationPath, который равен /api.Таким образом, он становится

http://localhost:8080/kwetter-0.0.1/api

Теперь вам нужно добавить службу REST @Path, которая равна /users.Таким образом, он становится

http://localhost:8080/kwetter-0.0.1/api/users

Пример:

GET http://localhost:8080/kwetter-0.0.1/api/users/{userId}/followers

Убедитесь, что вы не проверили это, в Run / Debug конфигурации.

enter image description here

...