Как изменить заголовки HTTP перед выполнением запроса в весенней загрузке mvc - PullRequest
0 голосов
/ 26 мая 2018

У меня есть несколько конечных точек отдыха.userId (заголовок http) является общим для всех конечных точек.Я хочу применить логику, скажем, установить значение по умолчанию, если оно не предоставлено, или обрезать его, если оно предусмотрено в запросе, прежде чем запрос входит в метод (например, для heartbeat).Как мы можем добиться этого в весенний ботинок mvc.

@RestController
public class MyResource {



        @RequestMapping(value = "/heartbeat", method= RequestMethod.GET)
        public String heartbeat (@RequestHeader (value="userId", required=false) String userId) 
        {
           ...
        }
    }

1 Ответ

0 голосов
/ 26 мая 2018

Прежде всего, вы не должны использовать заголовки http таким образом.В вашей ситуации хранение userId в сеансе будет гораздо более предпочтительным.

Хотя ваша цель может быть достигнута с помощью перехватчиков.Вот пример установки заголовка для каждого запроса:

import java.io.IOException;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.http.client.ClientHttpRequestExecution;
import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;

public class XUserAgentInterceptor implements ClientHttpRequestInterceptor {

    @Override
    public ClientHttpResponse intercept(
            HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
            throws IOException {

        HttpHeaders headers = request.getHeaders();
        headers.add("X-User-Agent", "My App v2.1");
        return execution.execute(request, body);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...