Не могу понять, как получить доступ к заголовкам запросов на сервере jaxrs, автоматически сгенерированном swagger - PullRequest
0 голосов
/ 11 февраля 2020

Это моя текущая фиктивная функция входа в систему 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 голосов
/ 12 февраля 2020

Этот автоматически сгенерированный класс не может получить доступ к заголовкам http. Вместо этого нужно go до 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 так, чтобы он передавал заголовки запроса, а затем обновить все файлы, которые используют функцию запроса (если вы не могу понять их все, ошибки компилятора помогут вам)

...