标签: rest

如何使用 REST JAX-RS 实现在满足特定条件时重定向用户?

我过去只使用 Tomcat 和 JSP 页面来执行查询,然后将查询结果分配到数组或对象中,然后通过响应将该数据传递到客户端。

request.setAttribute("errorMessage", "this is error!!");
request.getRequestDispatcher("report.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

在客户端 jsp 代码中,我可以执行以下操作:

${错误消息}

然后“这是错误!!” 消息就会出现。

我想对 REST JAX-RS GlassFish v3 做同样的事情。

    @Path("schedule/test")
    @POST
    @Consumes("application/x-www-form-urlencoded")
    @Produces("application/vnd.ms-excel")
    public Object tmpTest(String content) {
        try {

            //just my method to execute query and get result
            Vector out = (Vector)QueryManager.executeQuery;

            //if query result is empty, I want user to redirect to report.jsp page
            if(out.isEmpty()) {
                request.setAttribute("errorMessage", "This is error!!");
                request.getRequestDispatcher("report.jsp").forward(request, response);
                return null;
            }
        ....continue code......
   }
Run Code Online (Sandbox Code Playgroud)

这会导致我从未见过的神秘异常。

java.lang.ClassCastException: $Proxy109 cannot be cast …
Run Code Online (Sandbox Code Playgroud)

java rest redirect jsp jax-rs

2
推荐指数
1
解决办法
7928
查看次数

Atom 服务和 REST 服务的区别

有人可以解释一下 ATOM 服务和 REST 服务之间的区别吗?

ATOM 服务格式是一种基于 XML 的数据格式,但想知道它与 REST 服务有何不同。

谢谢。

rest atom-feed

2
推荐指数
1
解决办法
6592
查看次数

从命令提示符调用休息服务

我需要从命令提示符调用 wcf rest 服务。例如,当我输入

C:\Users\Admin>GET http://localhost:63088/RestCatalogService.svc/ 
Run Code Online (Sandbox Code Playgroud)

它应该返回 GET 在浏览器中以字符串格式返回的任何内容。任何关于如何开始或链接到任何相关资源的想法都会非常有帮助。

rest wcf command-line

2
推荐指数
1
解决办法
8096
查看次数

Jersey ContainerRequestFilter:抛出“ abortWith”且状态被禁止后得到404(403)

带有令牌身份验证+基于角色的授权的Jersey 2.22 API(我保护API的方式基于本文的公认答案:使用JAX-RS和Jersey进行基于REST令牌身份验证的最佳实践。最好在阅读之前阅读它试图理解我的问题):

这是我的web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!-- LISTENERS -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>JerseySpringServlet</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>ca.toto.api.filters</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>ca.toto.api.restapi</param-value>
    </init-param>

    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>ca.toto.api.filters.AuthenticationFilter;ca.toto.api.filters.AuthorizationFilter;com.toto.api.restapi.TaskRestService</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>JerseySpringServlet</servlet-name>
    <url-pattern>/filters/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>JerseySpringServlet</servlet-name>
    <url-pattern>/restapi/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

当我调用任务 Web服务时,流程毫无问题地进入第一个过滤器(AuthenticationFilter)(@Priority(Priorities.AUTHENTICATION)),验证我的令牌,从解码的令牌中获取用户,然后将其注册为委托人然后传入第二个过滤器AuthorizationFilter@Priority(Priorities.AUTHORIZATION)),在这里我从安全上下文中获取用户,获取其角色,然后检查他是否有权进行调用。如果是,请正常退出过滤器(如果否),请使用javax.ws.rs.container.ContainerRequestContextabortWith方法发送状态为403的响应:

@Secured
@Provider
@Priority(Priorities.AUTHORIZATION)
public class AuthorizationFilter implements ContainerRequestFilter {

    ...
try {
        boolean isAllowed = false;
        // Check if the …
Run Code Online (Sandbox Code Playgroud)

java rest restful-authentication httpresponse jersey-2.0

2
推荐指数
1
解决办法
1703
查看次数

如何指定像/ pets/{id}这样的路径,但有多个id?

我想创建一个路径,接受用逗号分隔的任意数量的ID.它应该接受以下所有内容:

GET /pets/1,2  # returns info about pets with ids 1, 2
GET /pets/4,10,12,124,2  # same, for pets with ids 4, 10, 12, 124, 2
Run Code Online (Sandbox Code Playgroud)

这本书"建立你不会讨厌的api"给了我这个想法.我如何大摇大摆?

api rest swagger

2
推荐指数
1
解决办法
639
查看次数

Clojure名称绑定到REST JSON数据

我是前端工程师,我们的团队正在将许多旧服务转换为用clojure编写的微服务.我看到的主要问题是,clojure命名约定更喜欢连字符,而不是变量名中的单词.这意味着如果您将变量直接映射到JSON,则任何JS使用者都需要使用括号表示法来访问此数据,例如response ['to-separate-words'].这显然不太理想.我认为这将是一个简单的查找最佳实践,但我一直在寻找一个小时,似乎我阅读的所有文档都避免了这个问题,但使用单个单词.还有其他人处理过此事.

rest json clojure microservices

2
推荐指数
1
解决办法
264
查看次数

Rails 4路由约束,仅包含查询字符串或数字

我正在尝试通过约束实现这两个路由:

get "products/:id", to: "products#show", constraints: { id: /\d/ }
get "products/:name", to: "products#search", constraints: { name: /[a-zA-Z]/ }
Run Code Online (Sandbox Code Playgroud)

第一条路由应使用URL触发,localhost:3000/products/3而最后一条应以触发localhost:3000/products/?name=juice

不起作用,我在这个问题上搜索了很多,但是我似乎找到了Ruby on Rails的第二或第三版的解决方案,并且其中大多数现在已被弃用。

有任何想法吗?谢谢。

ruby rest routes ruby-on-rails ruby-on-rails-4

2
推荐指数
1
解决办法
1549
查看次数

如何将 Julia 与 HTML 网页集成 - 如何从 Web 浏览器中运行的应用程序调用 Julia 函数

我们有一个 Julia 语言计算引擎,我们希望根据来自 HTML 网页的命令触发。

如何从此应用程序连接到 Julia 实例。是否可以通过 REST 服务连接到 Julia?

api rest julia

2
推荐指数
1
解决办法
108
查看次数

如何在 API 调用中转义特殊字符?

我正在尝试 GET 对 API 的请求,但一个特殊字符“*”(星号)中断了我的 API 调用,因此它发送的不完整。有什么办法可以逃脱吗?

在此处输入图片说明

取而代之的是:

https://rest2.bermanngps.cl/BermannRest/api/enviacomando?tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1*8F&md5pass=4e1ed8ef96fb83a0a30c39b0019fadc7&user=1017&avserie=12977
Run Code Online (Sandbox Code Playgroud)

这是发送:

https://rest2.bermanngps.cl/BermannRest/api/enviacomando?tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1
Run Code Online (Sandbox Code Playgroud)

我正在使用改造的 GET 请求方法,使用存储库动态加载查询字符串。我将如何在那里使用 URLEncoder 方法?

https://rest2.bermanngps.cl/BermannRest/api/enviacomando?tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1*8F&md5pass=4e1ed8ef96fb83a0a30c39b0019fadc7&user=1017&avserie=12977
Run Code Online (Sandbox Code Playgroud)

api rest android httprequest retrofit2

2
推荐指数
1
解决办法
411
查看次数

多个中间件(REST + SOAP)

我遵循了本教程:custom-asp-net-core-middleware-example

现在我想添加一个默认的 REST 中间件,它处理所有带有 JSON 内容的请求,但当我不注册自己的中间件时,找不到来自 ASP.NET 的 REST 中间件。

有人能告诉我如何使用多个中间件,其中一个是 SOAP,另一个是 REST 中间件吗?

这是我注册中间件的代码:

public static class SOAPEndpointExtensions
{
    public static IApplicationBuilder UseSOAPEndpoint(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<SOAPEndpointMiddleware>();
    }

    public static IApplicationBuilder UseSOAPEndpoint<T>(this IApplicationBuilder builder, string path, MessageEncoder encoder)
    {
        return builder.UseMiddleware<SOAPEndpointMiddleware>(typeof(T), path, encoder);
    }

    public static IApplicationBuilder UseSOAPEndpoint<T>(this IApplicationBuilder builder, string path, Binding binding)
    {
        var encoder = binding.CreateBindingElements().Find<MessageEncodingBindingElement>()?.CreateMessageEncoderFactory().Encoder;
        return builder.UseMiddleware<SOAPEndpointMiddleware>(typeof(T), path, encoder);
    }
}
Run Code Online (Sandbox Code Playgroud)

SOAPEndpointMiddleware.cs与教程中的大致相同。

c# rest soap middleware asp.net-core

2
推荐指数
1
解决办法
63
查看次数