当前位置: 首页 > 知识库问答 >
问题:

找不到类型为IO.VERTX.CORE.HTTP.HttpServerRequestA的上下文数据

蔚楷
2023-03-14

我的终结点类是

    @ApplicationScoped
public class UsersResource {

    @Context
    private UriInfo uriInfo;


    @Inject
    private UserRepository users;



    /*@Crypto(Type.BCRYPT)*/
/*  @Inject
    @Context
    private PasswordEncoder passwordEncoder;*/

    @GET
    public User getUserById(@PathParam ("id")Long id) {


        return users.findById(id);
    }
    @GET
    public Response allUsers() {
        return ok(users.findAll()).build();
    }

    @GET
    @Path("/count")
    public Response count() {
        return ok(Count.builder().count(users.stream().count()).build()).build();
    }

    @GET
    @Path("/exists")
    public Response exists(@QueryParam("username") String username, @QueryParam("email") String email) {
        if (username != null && username.length() > 0) {
            return ok(Existed.builder().existed(users.findByUsername(username).isPresent()).build()).build();
        }

        if (email != null && email.length() > 0) {
            return ok(Existed.builder().existed(users.findByEmail(email).isPresent()).build()).build();
        }

        return Response.status(Response.Status.BAD_REQUEST).entity("username or email query params is required")
                .build();
    }



    @POST
    public Response create(User user, @PathParam("user") Long userId) {
        User u = users.findUserById(userId);
        users.createUser(u);
        return Response.status(201).build();

    }

    @PUT 
    @Path("/{id}")
    public Response update(@PathParam ("id")Long id, User user) {

        if(!id.equals(user.getId())) {

            throw new BadRequestException("id in path and in Body must be the same");
        }
        users.updateUser(user);

        return Response.status(204).build();
    }

    @DELETE
    @Path("/{id}")
    public Response delete(@PathParam("id") Long userId) {
        users.deleteById(userId);
        return Response.status(204).build();
    }

}

第二个endpoint类:

   @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApplicationScoped
public class UserResource {

    @Context
    UriInfo uriInfo;

    @Inject
    UserRepository users;

    @Context
    SecurityContext securityContext;

    @PathParam("username")
    String username;

    @GET
    public Response getUserByUsername() {

        return users.findByUsername(username)
                .map(u -> Response.ok(u)
                        .link(uriInfo.getBaseUriBuilder().path("/users/{username}").build(username), "self").build())
                .orElse(Response.status(Response.Status.NOT_FOUND).build());
    }

    @PUT
    public Response updateUser(UserForm form) {

        if (securityContext.getUserPrincipal() != null
                && securityContext.getUserPrincipal().getName().equals(username)) {
            return users.findByUsername(username).map(u -> {
                u.setFirstName(form.getFirstName());
                u.setLastName(form.getLastName());
                u.setEmail(form.getEmail());

                users.save(u);
                return Response.noContent().build();
            }).orElse(Response.status(Response.Status.NOT_FOUND).build());
        }

        return Response.status(Response.Status.UNAUTHORIZED).build();
    }

    @DELETE
    public Response deleteUser() {

        return users.findByUsername(username).map(u -> {
            users.delete(u);
            return Response.noContent().build();
        }).orElse(Response.status(Response.Status.NOT_FOUND).build());
    }

}

非常感谢你帮助我。

共有1个答案

艾凯捷
2023-03-14

您的资源类缺少与endpoint匹配的@path。假设您希望调用第一个类资源的方法allusers,然后在类级别添加@path(“api”),在方法级别添加@path(“users”):

@Path("api")
@ApplicationScoped
public class UsersResource {

关于你的方法

@Path("users")
@GET
    public Response allUsers() {
        return ok(users.findAll()).build();
    }

而且我更喜欢在curl命令中添加-x GET(以后可以更改为不同的http方法)。

 类似资料:
  • 问题内容: 我有以下代码: 我正在尝试在命令行“ $ ant build”上使用ant对其进行编译,但我不断收到以下错误: 有什么建议吗?谢谢! 问题答案: 简短答案:添加此

  • 问题内容: 我正在尝试测试Keycloak REST API。安装了2.1.0.Final版本。我可以通过浏览器使用SSL访问管理员,而不会出现问题。 我正在使用上面的代码: 并得到错误: 我在上面添加了依赖项,但不能解决我的问题: 有什么线索吗? 问题答案: 我解决了!您必须将org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson

  • 上述代码导致以下错误: 我的猜测是,问题出在trait中的类属函数。

  • 问题内容: 每当启动应用程序spring启动时,我都会收到以下错误。 申请开始失败 描述: com.base.model.AbstractDao中的现场会话需要找不到“ org.hibernate.SessionFactory”类型的Bean。 行动: 考虑在配置中定义类型为“ org.hibernate.SessionFactory”的bean。 我添加了我的应用程序的实现: POM.xml 应

  • 在添加以下maven依赖项后,我的程序中出现以下错误。 错误 通过构造函数参数2表示的未满足依赖关系;嵌套异常为org。springframework。豆。工厂NoSuchBeanDefinitionException:没有“org”类型的合格bean。springframework。http。编解码器。ServerCodeConfigurer“可用:至少需要1个符合autowire候选条件的be

  • 问题内容: 我有一个带有applicationContext.xml和dispatcher-servlet.xml配置的Spring Web应用程序。我已经在applicationContext.xml中定义了,但是当我运行我的应用程序时,除非同时添加到dispatcher-servlet.xml中,否则找不到控制器。我在两个中都使用了相同的基本软件包,所以这不是问题。 我很困惑,因为我认为 ap