无法判断如何访问由swagger自动生成的jaxrs服务器中的请求标头

时间:2020-02-11 19:30:57

标签: java http-headers swagger jax-rs

这是我当前的虚拟POST登录功能。我想读取public Response loginPost()中的请求标头。可能吗?我尝试例如更改函数参数,但总是得到io.swagger.api.impl.LoginApiServiceImpl is not abstract and does not override abstract method loginPost(io.swagger.model.LoginPostRequestBody,javax.ws.rs.core.SecurityContext) in io.swagger.api.LoginApiService

package io.swagger.api.impl;

import io.swagger.api.*;
import io.swagger.model.*;

import io.swagger.model.LoginPost200Response;
import io.swagger.model.LoginPostRequestBody;

import java.util.Map;
import java.util.List;
import io.swagger.api.NotFoundException;

import java.io.InputStream;

import org.glassfish.jersey.media.multipart.FormDataContentDisposition;

import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.validation.constraints.*;

@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaJerseyServerCodegen", date = "2020-01-21T12:31:41.554Z[GMT]")public class LoginApiServiceImpl extends LoginApiService {
    @Override
    public Response loginPost(LoginPostRequestBody body, SecurityContext securityContext) throws NotFoundException {
        // do some magic!
    }
}

1 个答案:

答案 0 :(得分:0)

此自动生成的类无法访问http标头。相反,必须去src/gen/java/io/swagger/api/myApi.java并执行以下操作

  1. import javax.ws.rs.core.HttpHeaders;
  2. 在文件的最后部分编辑响应函数,以便它 也接受此参数@Context HttpHeaders requestHeaders
  3. 在末尾更改异常代码,功能也在那里 需要接受上述参数(在这种情况下,无需使用@Context

然后更新同一文件夹中的myApiService.java文件,当然也更新myApiServiceImpl.java中的src/main/java/io/swagger/api/impl/文件,以便它们都导入javax.ws.rs.core.HttpHeaders并将其作为参数。在后一种情况下也不要使用@Context

通常的想法是首先更改myApi.java文件,使其传递请求标头,然后更新使用请求功能的所有文件(如果无法完全理解它们,编译器错误将指导您)

相关问题