Liferay Jax-RS:无法调用简单的 REST api,得到 403 和 405
Posted
技术标签:
【中文标题】Liferay Jax-RS:无法调用简单的 REST api,得到 403 和 405【英文标题】:Liferay Jax-RS : Unable to call simple REST apis, getting 403 and 405 【发布时间】:2021-12-06 06:57:28 【问题描述】:我正在使用 Liferay 7.3。
尝试使用 JAX-RS 构建 Rest API,我已按照此处的官方文档生成令牌 https://help.liferay.com/hc/en-us/articles/360018166411-JAX-RS#using-oauth-20-to-invoke-a-jax-rs-web-service
@GET 得到 403 [Forbidden],@POST 得到 405 [method not allowed]
package com.liferay.jaxrstest.application;
import java.util.Collections;
import java.util.Set;
import javax.ws.rs.*;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.MediaType;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants;
@Component(
property =
JaxrsWhiteboardConstants.JAX_RS_APPLICATION_BASE + "=/greetings",
JaxrsWhiteboardConstants.JAX_RS_NAME + "=Greetings.Rest"
,
service = Application.class
)
public class LiferaxJaxRsTestApplication extends Application
public Set<Object> getSingletons()
return Collections.<Object>singleton(this);
@GET
@Produces("text/plain")
public String working()
return "It works!";
@GET
@Path("/morning")
@Produces("text/plain")
public String hello()
return "Good morning!";
@POST
@Path("/morning")
// @Produces("text/plain")
// @Consumes("application/json")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String hello(User user)
return "Good morning!" + user.getFirstName();
class User
private String firstName;
public User(String firstName)
this.firstName = firstName;
public String getFirstName()
return firstName;
public void setFirstName(String firstName)
this.firstName = firstName;
【问题讨论】:
【参考方案1】:如果您尝试测试您创建的端点之一,您应该使用为其创建的路径。
要测试早安 GET 端点,您应该向 URL 发出 GET 请求:
http://localhost:8080/o/greetings/morning
……没有身体。当您使用 OAuth2 时,您必须使用 Postman 中的“授权”选项卡传递令牌。在那里,您可以配置如何获取和使用新令牌。
我还考虑在门户控制面板中的 OAuth2 配置中,您在“范围”选项卡中为Greetings.Rest
服务选中了GET
和POST
框。
最后,要获取clientId
和clientSecret
,请转到
控制面板 → 配置 → OAuth2 管理。
【讨论】:
以上是关于Liferay Jax-RS:无法调用简单的 REST api,得到 403 和 405的主要内容,如果未能解决你的问题,请参考以下文章
我无法在 Web 内容中选择类别。 (Liferay 7.4.2)
在用于 OSGi 的 JAX-RS 白板的参考实现中,啥调用 createWhiteboard(..)?
无法将 portlet [portletname] 的角色与角色名称 [rolename] liferay 6.1 链接