我的终结点类是
@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());
}
}
非常感谢你帮助我。
您的资源类缺少与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