我找不到任何有用的例子,如何实现以下内容:我希望我的Swagger-UI中的API方法按方法(GET-POST-PUT-DELETE)或/按字母顺序排序.
到目前为止,所有方法都以随机顺序显示,甚至不按给定源代码的顺序显示.
我使用Jax-RS + Jersey 1.
使用@ApiOperation的position属性进行排序对我来说不是一个选项,因为有太多的方法而且API仍在扩展,所以如果有一个新的,我需要更新所有.
任何提示?
我试图通过ContainerRequestFilter拦截对我的JAX-RS Web服务的请求.我想将它与自定义注释一起使用,因此我可以装饰webservice的某些方法.这应该使我能够在执行实际方法之前根据信息是否在安全通道上处理来处理对此方法的请求.
我尝试了不同的方法,搜索了几个帖子,然后主要根据Alden在这篇文章中的答案实施.但我无法让它发挥作用.
我的web服务中有一个方法测试,用我的自定义注释Ssl装饰.
@POST
@Path("/test")
@Ssl
public static Response test(){
System.out.println("TEST ...");
}
Run Code Online (Sandbox Code Playgroud)
注释如下所示:
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
public @interface Ssl {}
Run Code Online (Sandbox Code Playgroud)
然后我设置了一个过滤器实现
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.ext.Provider;
@Ssl
@Provider
public class SslInterceptor implements ContainerRequestFilter
{
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
{
System.out.println("Filter executed.");
}
}
Run Code Online (Sandbox Code Playgroud)
但过滤器永远不会执行,也不会出现任何错误消息或警告.无论如何,测试方法运行良好.
要解决这个问题,我试图描述在web.xml中注册过滤器在这里.
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
<param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.my.packagewithfilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.my.packagewithfilter.SslInterceptor</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.my.packagewithfilter</param-value>
</init-param>
</servlet> …Run Code Online (Sandbox Code Playgroud) 我的 Firefox 正在向我的私有后端发出 OPTIONS 预检请求,以使用凭据发出后续 GET 请求。
预检请求包含标头
Origin http://localhost:9670
Access-Control-Request-Headers authorization
Access-Control-Request-Method GET
Run Code Online (Sandbox Code Playgroud)
我的服务器响应
Access-Control-Allow-Credentials true
Access-Control-Allow-Origin http://localhost:9670
Vary: Origin
Run Code Online (Sandbox Code Playgroud)
根据我发现的文档应该没问题。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
无论如何,我的火狐仍然显示
CORS 缺少允许标头
在开发者控制台“网络”选项卡的“已传输”部分中。
我的服务器响应缺少什么?
我有一个基于 clojure 的简单 web 项目,它只在资源文件夹中包含一些降价文件。以前我用
cd my-project
lein ring server
Run Code Online (Sandbox Code Playgroud)
然后我在浏览器中查看了正在运行的项目http://localhost:port。
现在我想将这个过程与 jenkins 集成,所以我
但随后,詹金斯总是抱怨
> java -client -XX:+TieredCompilation
> -Xbootclasspath/a:/home/.lein/self-installs/clojure-1.8.0.jar
> -Dfile.encoding=UTF-8
> -Dmaven.wagon.http.ssl.easy=false
> -Dleiningen.original.pwd=/var/lib/jenkins/jobs/my-project/workspace
> -cp /home/.lein/self-installs/clojure-1.8.0.jar clojure.main -m leiningen.core.main install
>
> Error: Could not find or load main class clojure.main
> Build step 'Build project using leiningen' marked build as failure …Run Code Online (Sandbox Code Playgroud) 我只是一个曾经的PHP开发人员.现在,在遗留应用程序上工作,我只是遇到了以下问题,这看起来非常愚蠢.但我不能得到$ someString类变量来保持正确的值:
class MyClass{
var $someString;
function doSomething(){
//$this->setString(); //this is effectively not called here, but later in getIframe()
$this->buildIframe();
echo $this->someString; //actually, I need someString here, but it is empty
}
function setString(){
$this->someString = "something";
}
function buildIframe(){
$content .= <iframe....>;
}
function getIframe(){
$this->setString();
}
}
$myClassInstance = new MyClass();
$myClassInstance->doSomething();
$myClassInstance->getIframe();
Run Code Online (Sandbox Code Playgroud)
据我所知,doSomething()在类上下文中被调用,正如我所展示的那样.
我究竟做错了什么?
编辑: 我审查了代码,我想我发现了什么导致了这一点.在html输出中嵌入了一个iframe,它在一个部分生成并稍后调用.所以setString()方法实际上并没有立即调用,我首先想到的是调用iframe代码时.这就是为什么它在我需要字符串输出的地方不可用.
我想现在的代码就是这样,除了getIframe()方法之外,没有办法获得$ someString输出.